How to find entry by object property from an array of objects?
You either iterate the array, searching for the particular record (ok in a one time only search) or build a hashmap using another associative array.
For the former, something like this
$item = null;foreach($array as $struct) { if ($v == $struct->ID) { $item = $struct; break; }}
See this question and subsequent answers for more information on the latter - Reference PHP array by multiple indexes
$arr = [ [ 'ID' => 1 ]];echo array_search(1, array_column($arr, 'ID')); // prints 0 (!== false)
Above code echoes the index of the matching element, or false
if none.
To get the corresponding element, do something like:
$i = array_search(1, array_column($arr, 'ID'));$element = ($i !== false ? $arr[$i] : null);
array_column works both on an array of arrays, and on an array of objects.
YurkamTim is right. It needs only a modification:
After function($) you need a pointer to the external variable by "use(&$searchedValue)" and then you can access the external variable. Also you can modify it.
$neededObject = array_filter( $arrayOfObjects, function ($e) use (&$searchedValue) { return $e->id == $searchedValue; });