我正在使用cakephp 2.2.5。
我在一个控制器中找到了一个包含查找的内容,该控制器从一个'中列出了四个新闻项目。关系。
我试图制作这四个项目的列表,但似乎无法让php foreach循环工作。
控制器阵列是:
$newsLists = $this->Industry->find('all', array(
'conditions' => array('id' => $id),
'fields' => array('id'),
'contain' => array(
'News' => array(
'conditions' => array('News.type' => 'main','News.active' => 'Yes'),
'fields' => array(
'News.type',
'News.id',
),
'order' => array(
'News.created' => 'desc',
),
'limit' => 3
))));
$this->set('newsLists', $newsLists);
调试输出正常工作:
Array
(
[0] => Array
(
[Industry] => Array
(
[id] => 1
[tags] =>
)
[News] => Array
(
[0] => Array
(
[type] => main
[id] => 10
[industry_id] => 1
)
[1] => Array
(
[type] => main
[id] => 11
[industry_id] => 1
)
[2] => Array
(
[type] => main
[id] => 12
[industry_id] => 1
)
)
)
)
但是这个foreach循环只显示一个项目:
<ul>
<?php
$i = 0;
foreach ($newsLists as $newsList): ?>
<li><?php echo $newsList['News'][$i]['slug']; ?></li>
<?php endforeach; ?>
感谢
答案 0 :(得分:2)
应该是 -
<?php foreach ($newsLists['News'] as $newsList): ?>
<li><?php echo $newsList['field to print']; ?></li>
<?php endforeach; ?>
你应该注意的一些问题 -
There is no slug field.
You have mentioned fields - type & id. But the industry_id is also fetched.
答案 1 :(得分:1)
你有两个问题:
你echo
使用$i
输入一个条目,但从不递增此值,$i
仍为0.并且只有一步循环,你循环遍历数组只有一条记录。
slug
未在您的数组中被攻击,只能使用type, id, industry_id
中的一个
广告1.
正确的方法是:
foreach ($newsLists['News'] as $newsList) {
echo '<li>' . $newsList['type'] . '</li>'; // you can switch type to id or industry_id
}
答案 2 :(得分:0)
该决议涉及创建另一个循环,因为行业和新闻之间存在许多关系。这个额外的循环允许新闻报道循环。
<?php foreach ($newsLists as $newsList): ?>
<ul>
<?php foreach ($newsList ['News'] as $list): ?>
<li><?php echo $list['slug']; ?></li>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>