PHP Foreach循环遍历数组和对象

37

我有一个对象数组;运行print_r()返回以下输出;

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

如何循环遍历结果并访问学生类对象?
4个回答

53

使用

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

7
请注意,$key=>部分不是必需的。 - Explosion Pills
2
但是建议包括 $key => 部分。根据这个基准测试,当您包括 $key 部分时,循环速度会快两倍:http://www.phpbench.com/ - Philipp

7
循环遍历数组和对象是一个相当常见的任务,很高兴您想要学习如何做到这一点。通常来说,您可以使用 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}";
}

4
假设您的sm_idc_id属性是公共的,您可以通过在数组上使用foreach来访问它们:
$array = array(/* objects in an array here */);
foreach ($array as $obj) {
    echo $obj->sm_id . '<br />' . $obj->c_id . '<br />';
}

2

使用数组或对象元素递归遍历对象或数组:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接