您如何在php中搜索类的实例

时间:2018-08-21 15:21:22

标签: php arrays class search

我正在尝试在PHP中搜索类的实例,但是对于我一生来说,我不知道该怎么做,除了显而易见的是遍历数组中的每个项目并检查值。 我希望有人可以提供帮助。 这是一个例子

class Item {
    public $item;
    public $test;
    public function __construct($item) {
        $this->item = $item;
        $this->test = sprintf("%d - Hello", $item);
    }
}

$array = [];
for($i=0; $i < 100; $i++) {
    $array[] = new Item($i);
}

$foundItem = array_search(75, array_column($array, "item"));
echo print_r($foundItem, true);

我希望$foundItem是返回的整个对象。 预先感谢。

1 个答案:

答案 0 :(得分:0)

array_search返回数组中该项的键。由于仍然可以使用整个数组,因此可以通过简单的更改使用它来访问整个对象:

$foundItem = $array[array_search(75, array_column($array, "item"))];

请参见https://3v4l.org/6k6nE(请注意,这需要PHP 7+,因为array_column直到那时才在对象数组上起作用)

您还可以使用其他一些方法(尽管您说过要避免手动循环对象)。 array_column支持使用第三个参数按给定的列对数组重新索引,因此这将消除使用array_search的需要:

$array = array_column($array, null, 'item');
$foundItem = $array[75];