php - in_array - Usando array_intersect en una matriz multidimensional
in_array multidimensional php (2)
Use array_uintersect()
para usar una función de comparación personalizada, como esta:
$arr1 = array(
array(''name'' => ''asdfjkl;'', ''value'' => ''foo''),
array(''name'' => ''qwerty'', ''value'' => ''bar''),
array(''name'' => ''uiop'', ''value'' => ''baz''),
);
$arr2 = array(
array(''name'' => ''zxcv'', ''value'' => ''stuff''),
array(''name'' => ''asdfjkl;'', ''value'' => ''foo''),
array(''name'' => ''12345'', ''value'' => ''junk''),
array(''name'' => ''uiop'', ''value'' => ''baz''),
);
$intersect = array_uintersect($arr1, $arr2, ''compareDeepValue'');
print_r($intersect);
function compareDeepValue($val1, $val2)
{
return strcmp($val1[''value''], $val2[''value'']);
}
que cede, como esperarías:
Array
(
[0] => Array
(
[name] => asdfjkl;
[value] => foo
)
[2] => Array
(
[name] => uiop
[value] => baz
)
)
Tengo dos arreglos que se ven así:
Array
(
[0] => Array
(
[name] => STRING
[value] => STRING
)
[1] => Array
(
[name] => STRING
[value] => STRING
)
[2] => Array
(
[name] => STRING
[value] => STRING
)
)
y me gustaría poder replicar array_intersect comparando el ID de los sub arrays dentro de los dos arreglos maestros. Hasta ahora, no he tenido éxito en mis intentos. :(
function compareDeepValue($val1, $val2)
{
return strcmp($val1[''value''], $val2[''value'']);
}
Asegúrese de que la clave val2 exista en la matriz val1, porque la función ordena la matriz primero. Muy extraño.