35

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

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

如何遍历结果并访问学生类对象?

4

4 回答 4

49

采用

//$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;
}
于 2012-12-04T16:53:47.347 回答
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}";
}
于 2012-12-04T16:55:55.990 回答
2

假设您的sm_id和属性是公开的,您可以通过在数组上c_id使用 a 来访问它们:foreach

$array = array(/* objects in an array here */);
foreach ($array as $obj) {
    echo $obj->sm_id . '<br />' . $obj->c_id . '<br />';
}
于 2012-12-04T16:54:04.520 回答
2

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

function traverse(&$objOrArray)
{
    foreach ($objOrArray as $key => &$value)
    {
        if (is_array($value) || is_object($value))
        {
            traverse($value);
        }
        else
        {
            // DO SOMETHING
        }
    }
}
于 2014-04-06T12:20:52.537 回答