I have two multidimensional arrays which are indexed arrays of associative rows.
$array1 = array(
array('name' => 'foo', 'id' => 12),
array('name' => 'bar', 'id' => 34),
array('name' => 'boo', 'id' => 56),
);
$array2 = array(
array('name' => 'bar', 'id' => 34),
array('name' => 'boo', 'id' => 56),
array('name' => 'bar', 'id' => 78),
);
It is possible that rows might have different id
values but the same name
value -- such as bar
in my sample input data.
I need to compare the arrays based on id
values only.
Expected Output: (because id
s 34
and 56
are found in $array2
)
array(
array('name' => 'foo', 'id' => 12)
)
I tried $one_not_two = array_diff($array1['id'], $array2['id']);
which does not return anything.
I also tried $one_not_two = array_diff($array1['id'], $array2['id']);
which returned an error "argument is not an array."
Originally, I got around it by extracting the id
s into a one-dimensional array, then just comparing those. Now a new feature in our application requires me to compare the rows while maintaining the multidimensional structure. Any advice?
Our servers are currently running php 5.3 if that makes any difference.