web-dev-qa-db-fra.com

PHP Tableaux et objets Foreach

J'ai un tableau d'objets. UNE print_r la sortie ressemble à ceci:

Array
(
    [0] => stdClass Object
        (
            [sm_id] => 1
            [c_id] => 1
        )
    [1] => stdClass Object
        (
            [sm_id] => 1
            [c_id] => 2

        )
)

J'ai vraiment du mal à trouver un moyen de parcourir les résultats et d'accéder aux éléments de l'objet. Si quelqu'un pouvait me donner des conseils, je serais extrêmement reconnaissant.

Merci d'avance

30
AttikAttak

Utilisation

//$arr should be array as you mentioned as below
foreach($arr as $key=>$value){
  echo $value->sm_id;
}

OR

//$arr should be array as you mentioned as below
foreach($arr as $value){
  echo $value->sm_id;
}
42
GBD

Faire une boucle sur des tableaux et des objets est une tâche assez courante, et il est bon que vous souhaitiez apprendre à le faire. De manière générale, vous pouvez faire une boucle foreach qui parcourt chaque membre, en lui attribuant un nouveau nom temporaire, puis vous permet de gérer ce membre particulier via ce nom:

foreach ($arr as $item) {
    echo $item->sm_id;
}

Dans cet exemple, chacune de nos valeurs dans le $arr sera accessible dans l'ordre comme $item. Nous pouvons donc imprimer nos valeurs directement à partir de cela. Nous pourrions également inclure l'indice si nous voulions:

foreach ($arr as $index => $item) {
    echo "Item at index {$index} has sm_id value {$item->sm_id}";
}
6
Sampson

Objet ou tableau de cheminement récursif avec éléments de tableau ou d'objets:

function traverse(&$objOrArray)
{
    foreach ($objOrArray as $key => &$value)
    {
        if (is_array($value) || is_object($value))
        {
            traverse($value);
        }
        else
        {
            // DO SOMETHING
        }
    }
}
2
Ronny Sherer

En supposant que votre sm_id et c_id les propriétés sont publiques, vous pouvez y accéder en utilisant un foreach sur le tableau:

$array = array(/* objects in an array here */);
foreach ($array as $obj) {
    echo $obj->sm_id . '<br />' . $obj->c_id . '<br />';
}
2
imkingdavid