黑马程序员技术交流社区
标题: foreach遍历Laravel集合对象 [打印本页]
作者: wendyYao 时间: 2018-1-5 16:17
标题: foreach遍历Laravel集合对象
【foreach循环对象,建是属性名,值是属性值】
class Stu
{
public $a = 'a1';
public $b = 'b2';
protected $c = 'c3';
public function d() {}
}
// //创建对象
$stuObj = new Stu;
foreach ($stuObj as $key => $v) {
print_r($key);
print_r($v);
echo '<hr />'; //
}
【结论】只有公开的属性才可以遍历
【foreach循环受保护型属性】
class smallObj
{
public $name = 'h';
public $age = 'hh';
}
class Stu implements IteratorAggregate
{
protected $items;
public function __construct()
{
$this->items = array(
new smallObj,
new smallObj,
new smallObj
);
}
//说明:实现IteratorAggregate接口里面的抽象方法
//触发:当foreach时候触发
public function getIterator() {
//通过ArrayIterator迭代器遍历$this->items挨个返回给$v
return new ArrayIterator($this->items);//通过ArrayIterator迭代器过滤items属性
}
}
//创建对象
$stuObj = new Stu;
echo '<pre>';
// print_r($stuObj);
foreach ($stuObj as $key => $v) {
print_r($v);
}
laravel底层在foreach执行的时候触发了getIterator这个方法,然后在通过迭代器遍历每个item属性,并赋值。所以我们在foreach遍历对象的时候直接得到的是数据表中的每一条记录。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |