为了账号安全,请及时绑定邮箱和手机立即绑定

PHP比较2个多维数组并获取不匹配的项目

PHP比较2个多维数组并获取不匹配的项目

PHP
ITMISS 2021-10-22 16:50:42
我正在尝试使用“nombre_entrada”、“precio_productor”和“id_funcion”来比较两个多维数组之间的不匹配项。我尝试使用 array_search/array_column 但没有用。我需要的是获取一个包含不匹配项目的新数组。数组 1Array(    [0] => Array        (            [nombre_entrada] => Entrada General            [precio_productor] => 250            [id_funcion] => 907        )    [1] => Array        (            [nombre_entrada] => Entrada General            [precio_productor] => 300            [id_funcion] => 907        )    [2] => Array        (            [nombre_entrada] => Entrada General            [precio_productor] => 350            [id_funcion] => 907        )    [3] => Array        (            [nombre_entrada] => 2 entradas x            [precio_productor] => 400            [id_funcion] => 907        ))阵列 2Array(    [0] => Array        (            [nombre_entrada] => Entrada General            [precio_productor] => 350            [id_funcion] => 907        )    [1] => Array        (            [nombre_entrada] => 2 entradas x            [precio_productor] => 400            [id_funcion] => 907        ))在数组 1 中,索引 0 和 1 不存在于数组 2 中,因此我需要创建一个包含这些项目的最终数组。最终阵列Array(    [0] => Array        (            [nombre_entrada] => Entrada General            [precio_productor] => 250            [id_funcion] => 907        )    [1] => Array        (            [nombre_entrada] => Entrada General            [precio_productor] => 300            [id_funcion] => 907        ))
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

这通常是array_diff.

您不能array_diff直接使用for 它,因为它比较数组项的字符串表示以找出差异,并且数组没有不同的字符串表示。(它们都只是转换为“数组”。)

PHP 可以比较数组,如果您使用,array_udiff您可以直接在比较函数中比较它们,而无需转换为字符串。

$result = array_udiff($array1, $array2, function($a, $b) { return $a <=> $b; });


查看完整回答
反对 回复 2021-10-22
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我能够以这种方式创建数组


$newArray = array();

foreach ($detectadas as $item) {

    if ( 

        array_search($item['nombre_entrada'], array_column($entradasResult2, 'nombre_entrada')) === false OR

        array_search($item['precio_productor'], array_column($entradasResult2, 'precio_productor')) === false OR

        array_search($item['id_funcion'], array_column($entradasResult2, 'id_funcion')) === false

    ) {

        array_push( $newArray, $item );

    }

}


查看完整回答
反对 回复 2021-10-22
  • 3 回答
  • 0 关注
  • 258 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信