2016-10-01 75 views
0

我试图打印列名称和它的值使用我的表中每列的foreach循环。我想这个代码Yii2使用循环打印列名称和它的值

$contentAfter = DepCustomer::findOne($id); 
echo $contentAfter->customer_id; 
echo $contentAfter->account_no; 
echo $contentAfter->name; 
echo $contentAfter->address; 
echo $contentAfter->gender; 

以这种方式

$contentAfter = DepCustomer::findOne($id); 
foreach($contentAfter as $name => $value){ 
    echo $name .': '. $value; 
} 

我一直在使用asArray(试过被执行)也但我发现了错误。

+0

第二个代码块是正确的。你看到了什么错误? – SilverFire

+0

你得到哪个错误? – Mohan

+0

谢谢大家。我解决了我的问题。早些时候,我正在'调用未知方法'。也许我忽略了一些东西我再一次写了上面给出的代码。现在它正在工作。再次感谢。 – gojiraki

回答

0

您应该使用asArray获取数组而不是对象。 此外在foreach代码应该在{被encolsed}呼应应该在所有

$contentAfter = DepCustomer::find->where(['id'=> $id])->asArray()->one(); 
    foreach($contentAfter as $name => $value) { 

    echo $name .':' . $value->customer_id . '<br />'; 
    echo $name .':' . $value->account_no . '<br />'; 
    echo $name .':' . $value->name . '<br />'; 
    echo $name .':' . $value->address . '<br />'; 
    echo $name .':' . $value->gender . '<br />'; 

    } 
+0

感谢您的答案,但这不是我想要实现的。我认为我的问题有些模糊。对不起。我想用循环打印列名和它的值,而不是打印每一列。 – gojiraki

+0

@gojiraki。我已更新答案希望是你在找什么 – scaisEdge

0

你想在屏幕上打印的列?也许你可以试试这个。 如果你想打印物体DepCustomer单列,你可以使用的print_r

$contentAfter = DepCustomer::findOne($id); 
echo '<pre>'; 
print_r($contentAfter); 
echo '</pre>'; 

如果YOUT想打印物体的多行,可以使用的foreach和print_r的

$contentAfter = DepCustomer::find()->where()->all(); 
foreach($contentAfter as $v){ 
    echo '<pre>'; 
    print_r($v); 
    echo '</pre>'; 
    echo '<br/>'; 
} 

我希望它帮你

+0

谢谢你的回答。我解决了我的问题。早些时候我正在'调用未知方法'。也许我忽略了一些东西我再一次写了上面给出的代码。现在它正在工作 – gojiraki