在cakephp中循环遍历数组仍然具有未定义的偏移量

时间:2015-01-06 06:52:14

标签: php arrays loops cakephp

我正在使用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; ?>

感谢

3 个答案:

答案 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)

你有两个问题:

  1. echo使用$i输入一个条目,但从不递增此值,$i仍为0.并且只有一步循环,你循环遍历数组只有一条记录。

  2. slug未在您的数组中被攻击,只能使用type, id, industry_id中的一个

  3. 广告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; ?>