PHP Foreach数组和对象

时间:2012-12-04 16:50:40

标签: php arrays stdclass

我有一个对象数组。 print_r输出如下所示:

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

        )
)

我真的很难找到一种方法来循环结果并访问对象元素。 如果有人能给我任何指示,我将非常感激。

提前致谢

4 个答案:

答案 0 :(得分:40)

使用

//$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;
}

答案 1 :(得分:6)

循环使用数组和对象是一项非常常见的任务,并且您希望学习如何操作它是件好事。一般来说,您可以执行foreach loop循环每个成员,为其分配一个新的临时名称,然后让您通过该名称处理该特定成员:

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

答案 2 :(得分:2)

假设您的sm_idc_id属性是公开的,您可以使用阵列上的foreach访问它们:

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

答案 3 :(得分:2)

具有数组或对象元素的递归遍历对象或数组:

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