使用数组时获取foreach错误的无效参数

时间:2013-06-18 20:33:15

标签: php loops foreach

我无法理解为什么会出现这种错误。从我可以看到我正确使用的函数返回数据库中存在的数据数组。我使用foreach()来回显数组中的每个数据,但它给出了错误:Warning: Invalid argument supplied for foreach()

这是功能:

// Retrieve posts
    function retrieve_posts(){
        // start new instance of the database connection 
        global $dbh;

        // Get all the posts
        $stmt = $dbh->prepare("SELECT * FROM jacks_barbers_reviews ORDER BY date DESC");
        $stmt->execute();

        while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

                $result[] = $row;
        }

        return $result;
    }

和(简化的)foreach循环:

<?php

        $posts = retrieve_posts();


            foreach($posts AS $index){

                echo '<div class="test-wrap">'; //contains the individual testimonials
                echo '<p>' . $index['post'] . '</p>';
                echo '<p style="float:right;font-style:normal;font-size:15px;">By ' .$index['name']. '  ' .$index['date']. '</p>';
                echo '<div style="clear:both"></div>';
                echo '</div>'; // closes test-wrap
            }


    ?>

那是什么导致了这个错误?

由于

1 个答案:

答案 0 :(得分:6)

我想如果你没有结果可能会发生这种情况。您没有初始化$result函数中的retrieve_posts变量。返回Null,这不是在foreach循环内迭代的允许值。

尝试在while循环之前初始化变量:$result = array();

编辑: 看看foreach official PHP docs

  

foreach构造提供了一种迭代数组的简单方法。 foreach仅适用于数组和对象

如果尚未初始化它,则返回一个空值,既不是对象也不是数组。