Adı dayalı kimliğini almak için Array seçin

2 Cevap

İşte benim var_dump olduğunu:

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)
  }
}

Açıkçası her zaman 2 nesne olmayacak, 2. nesneyi seçmek için bazı PHP gerekir, bu yüzden ben her zaman "özel" olacak ["isim"] kendi dayalı seçmek gerekir.

Aşağıdaki kod beni tüm isimlerini vermek ama sadece "özel" ve töre kimliği almak. Istiyorum

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

2 Cevap

....

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

Alternatif:

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);
}

Bu özellik ve özellik değerine göre filtre genel bir filtre. Sadece filterBy, örneğin için argümanları değiştirmez filterBy('id', 1) Sadece özelliği ile nesneleri dönecekti id ayarlandığında 1.