PHP Foreach 数组和对象

Posted

技术标签:

【中文标题】PHP Foreach 数组和对象【英文标题】:PHP Foreach Arrays and objects 【发布时间】:2012-11-22 08:52:51 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

假设您的 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
        
    

【讨论】:

【参考方案3】:

循环遍历数组和对象是一项非常常见的任务,你想学习如何去做是件好事。一般来说,您可以执行 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";

【讨论】:

【参考方案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;

【讨论】:

请注意,$key=&gt; 部分不是必需的 但建议包含$key =&gt; 部分。根据这个基准,当你 include $key 部分时,循环的速度是原来的两倍:phpbench.com

以上是关于PHP Foreach 数组和对象的主要内容,如果未能解决你的问题,请参考以下文章

php foreach 循环数组要点

PHP中的foreach对象数组

PHP中使用foreach循环读取数组数据的方法

如何从foreach循环php中的对象数组中删除对象

PHP中使用foreach循环读取数组数据的方法

深入解析php中的foreach问题