如何从对象数组中按对象属性查找条目?

2022-08-30 06:19:17

数组如下所示:

[0] => stdClass Object
        (
            [ID] => 420
            [name] => Mary
         )

[1] => stdClass Object
        (
            [ID] => 10957
            [name] => Blah
         )
...

我有一个名为.$v

如何选择具有属性具有值的对象的数组条目?ID$v


答案 1

您可以迭代数组,搜索特定记录(在仅一次搜索中确定)或使用另一个关联数组构建哈希映射。

对于前者,类似这样的东西

$item = null;
foreach($array as $struct) {
    if ($v == $struct->ID) {
        $item = $struct;
        break;
    }
}

有关后者的更多信息,请参阅此问题和后续答案 - 通过多个索引引用 PHP 数组


答案 2
$arr = [
  [
    'ID' => 1
  ]
];

echo array_search(1, array_column($arr, 'ID')); // prints 0 (!== false)

上面的代码回显匹配元素的索引,如果没有。false

要获取相应的元素,请执行以下操作:

$i = array_search(1, array_column($arr, 'ID'));
$element = ($i !== false ? $arr[$i] : null);

array_column既适用于数组数组,也适用于对象数组。