2010-02-21 6 views
1

Voici mon var_dump:Sélectionnez de tableau pour obtenir ID basée sur le nom

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

J'ai besoin de PHP pour sélectionner le 2ème objet, évidemment, il ne sera pas toujours le 2ème objet, donc je dois le sélectionner en fonction sur son ["nom"] qui sera toujours "personnalisé".

Le code ci-dessous me donne tous les noms mais je veux juste "custom" et le get l'ID de la coutume.

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

Répondre

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

....

foreach ($profilecats as $value) 
{ 
    if ($value === "custom") 
    { 
    $id = $profilecats['id']; 
    break; 
    } 
} 
0
function get_object($array, $name) 
{ 
    foreach ($array as $obj) 
    { 
     if ($obj->name == $name) 
     { 
      return $obj; 
     } 
    } 
    return null; 
} 
1

Alternative:

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

Ceci est un filtre générique qui filtre par la propriété et la valeur de la propriété. Il suffit de changer les arguments pour filterBy, par exemple. filterBy('id', 1) renvoie uniquement les objets avec la propriété id définie sur 1.

Questions connexes