PHP Foreach массивы и объекты


У меня есть массив объектов. Вывод print_r выглядит следующим образом:

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

        )
)

Я действительно изо всех сил пытаюсь найти способ зациклить результаты и получить доступ к элементам объекта. Если бы кто-нибудь мог дать мне какие-нибудь указания, я был бы чрезвычайно благодарен.

Заранее спасибо

4 25

4 ответа:

Использовать

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

Или

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

Зацикливание массивов и объектов-довольно распространенная задача, и хорошо, что вы хотите узнать, как это сделать. Вообще говоря, вы можете сделать foreach цикл , который циклически повторяет каждый элемент, присваивая ему новое временное имя, а затем позволяет обрабатывать этот конкретный элемент с помощью этого имени:

foreach ($arr as $item) {
    echo $item->sm_id;
}
В этом примере каждое из наших значений в $arr будет доступно в порядке $item. Таким образом, мы можем вывести наши ценности непосредственно из этого. Мы могли бы также включить индекс, если мы разыскивается:
foreach ($arr as $index => $item) {
    echo "Item at index {$index} has sm_id value {$item->sm_id}";
}

Рекурсивное пересечение объекта или массива с элементами массива или объектов:

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

Предполагая, что ваши свойства sm_id и c_id являются открытыми, вы можете получить к ним доступ с помощью foreach в массиве:

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