How to find entry by object property from an array of objects? How to find entry by object property from an array of objects? php php

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;    });