I have two arrays that both look like this:
Array ( [0] => Array ( [name] => STRING [value] => STRING ) [1] => Array ( [name] => STRING [value] => STRING ) [2] => Array ( [name] => STRING [value] => STRING ) )
and I would like to be able to replicate array_intersect by comparing the ID of the sub arrays within the two master arrays. So far, I haven't been successful in my attempts. :(
In C programming, you can create an array of arrays. These arrays are known as multidimensional arrays. For example, float x[3][4];
numpy is the core library for scientific computing in Python. It provides a high-performance multidimensional array object and tools for working with these arrays.
Indexing multi-dimensional arraysMulti-dimensional arrays are indexed in GAUSS the same way that matrices are indexed, using square brackets [] . Scanning above, you can see that the value of the element at the intersection of the third row and second column of x1 is 8.
Use array_uintersect()
to use a custom comparison function, like this:
$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']); }
which yields, as you would hope:
Array ( [0] => Array ( [name] => asdfjkl; [value] => foo ) [2] => Array ( [name] => uiop [value] => baz ) )
function compareDeepValue($val1, $val2) { return strcmp($val1['value'], $val2['value']); }
Be sure that val2 key is existing in val1 array, because the function is ordering array first. Very strange.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With