2016-02-03 127 views
1

例如,我在laravel中看到,循环遍历模型时,它仅循环通过表属性。例如在循环对象时,循环访问特定属性

$user = new User(1); 
foreach($user as $key => $value){ 
    echo $key.' = '.$value.'<br>'; 
} 

输出会是这样

id=1 
first_name=jone 

它只遍历表列虽然该类具有其他属性

我的班级是这样

class Model { 
    protected $prop1; 
    protected $prop2; 
    protected $columns = ['id' => 1, 'name' => 'name']; 
} 

我想实现类似的东西,所以当我创建一个对象并循环它时,只循环t hrough $columns属性格式例如

$model = new Model(); 
foreach($model as $key => $value){ 
     echo $key.' = '.$value.'<br>'; 
} 

我需要的输出是这样

id=1 
name=name 
+1

有没有想过使用'in_array'? 'if(in_array($ key,$ this-> columns)){echo ...}' –

回答

0

您可以定义PHP将如何对待你的foreach循环对象。 请参阅此处以获取文档:http://php.net/manual/en/language.oop5.iterations.php 默认情况下,php将遍历所有公共属性。

+0

我们欢迎您对stackoverflow的第一个答案。也放一些代码。不要只发布链接。 –