数组看起来像:

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

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

我有一个整数变量$v。

我如何选择一个数组条目,其中有一个对象的ID属性有$v值?


当前回答

      $keyToLookFor = $term->name;
      $foundField = array_filter($categories, function($field) use($keyToLookFor){
      return $field -> name === $keyToLookFor; });

      if(!empty($foundField)){
      $ke = array_keys($foundField);
      $ke = $ke[0];
      $v = $foundField[$ke]->id;}

我在Wordpress主题上工作,从类别得到总评论,这有助于我为数组

其他回答

      $keyToLookFor = $term->name;
      $foundField = array_filter($categories, function($field) use($keyToLookFor){
      return $field -> name === $keyToLookFor; });

      if(!empty($foundField)){
      $ke = array_keys($foundField);
      $ke = $ke[0];
      $v = $foundField[$ke]->id;}

我在Wordpress主题上工作,从类别得到总评论,这有助于我为数组

我在这里找到了更好的解决方案。对这个问题的修改是这样的:

$neededObject = array_filter(
    $arrayOfObjects,
    function ($e) use ($searchedValue) {
        return $e->id == $searchedValue;
    }
);

YurkamTim是对的。它只需要修改:

在function($)之后,你需要一个指向外部变量的指针“use(&$searchedValue)”,然后你就可以访问外部变量了。你也可以修改它。

$neededObject = array_filter(
    $arrayOfObjects,
    function ($e) use (&$searchedValue) {
        return $e->id == $searchedValue;
    }
);

我解决了这个问题的关键数组与ID。对于ID就是您要查找的内容的这种情况,这种方法更简单,可能也更快。

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

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

现在我可以直接寻址数组:

$array[$v]->name = ...

或者,如果我想验证一个ID的存在:

if (array_key_exists($v, $array)) { ...

使用array_column重新索引将节省时间,如果你需要查找多次:

$lookup = array_column($arr, NULL, 'id');   // re-index by 'id'

然后,您可以简单地$查找[$id]在将。