php按对象的字段搜索对象最有效的数组

时间:2019-02-01 12:13:48

标签: php

我得到了一个对象数组,该对象数组可能包含很多元素,超过数千个,等等。该对象可能如下所示:

object(Node)#21489 (15) {
  ["id"]=>
  string(7) "balance"
  ["type"]=>
  string(1) "4"//...and so other fields
}

我需要搜索的对象的阵列查找和对象,具有一定的id。目前,我可以用foreach循环的帮助下做到这一点,是这样的:

 foreach($nodes_array as $node) {
        if ($node->id == 'my certain id') {
            return $node;
        }
    }

,但问题是,它需要太过长...遍历整个阵列找到所需要的对象。有没有更有效的方法(或重构的方法)做出这样的搜索速度更快(可能是迭代器或其他水木清华)? 谢谢。

1 个答案:

答案 0 :(得分:4)

执行一次

$nodes_array2 = [];
foreach($nodes_array as $node) {
     $nodes_array2[$node->id] = $node;
unset($nodes_array);

然后

return $nodes_array2['my certain id'];