从Array中选择以根据Name获取ID

时间:2010-02-21 12:44:13

标签: php

这是我的var_dump:

array(2) {
  [1]=>
  object(stdClass)#382 (3) {
    ["name"]=>
    string(12) "Other fields"
    ["sortorder"]=>
    string(1) "1"
    ["id"]=>
    int(1)
  }
  [3]=>
  object(stdClass)#381 (3) {
    ["name"]=>
    string(6) "custom"
    ["sortorder"]=>
    string(1) "2"
    ["id"]=>
    int(3)
  }
}

我需要一些PHP来选择第二个对象,显然它不会永远是第二个对象,所以我需要根据它的[“name”]选择它,它总是“自定义”。

以下代码为我提供了所有名称,但我只想要“自定义”并获取自定义ID。

foreach ($profilecats as $cat) {
    $settings .= $something->name;
}

4 个答案:

答案 0 :(得分:1)

foreach ($profilecats as $cat) {
  if ($cat->name == 'custom') {
    echo $cat->id;
  }
}

答案 1 :(得分:1)

替代:

class ObjectFilter extends FilterIterator
{
    protected $propName  = null;
    protected $propValue = null;

    public function filterBy($prop, $value)
    {  
        $this->propName  = $prop;
        $this->propValue = $value;
    }

    public function accept() {
        if(property_exists($this->current(), $this->propName)) {
            return $this->current()->{$this->propName} === $this->propValue;
        }
    }
}

$finder = new ObjectFilter( new ArrayIterator( $cats ) );
$finder->filterBy('name', 'custom');
foreach($finder as $cat) {
    var_dump($cat);
}

这是一个按属性和属性值过滤的通用过滤器。只需更改filterBy的参数,例如filterBy('id', 1)只返回属性id设置为1的对象。

答案 2 :(得分:0)

...

foreach ($profilecats as $value)
{
  if ($value === "custom")
  {
    $id = $profilecats['id'];
    break;
  }
}

答案 3 :(得分:0)

function get_object($array, $name)
{
    foreach ($array as $obj)
    {
        if ($obj->name == $name)
        {
            return $obj;
        }
    }
    return null;
}