PHP方法不能返回二维数组?

时间:2017-12-13 13:18:10

标签: php arrays

你好,我坚持了很奇怪的事情。

我正在为学校项目编写简单的PHP MVC WebApp,但我无法返回二维数组。

我用这种方式解决了这个问题:

class Post{
    public $author;
    public $cat;
    public $table;
    function getPosts($cat = ""){
        dbstart();
        global $dbconn;
        empty($cat) ? $query = mysqli_query($dbconn, "SELECT * FROM pytania") : $query = mysqli_query($dbconn, "SELECT * FROM pytania WHERE cat = $cat");
        while($row = mysqli_fetch_assoc($query)){
        $output[] = $row;
        $this -> table = $output;   
        dbstop();
        }
    }       

}

当我在控制器中调用属性

时,它非常有效
"poststable" => $post -> table

给我所有四个帖子(包含4行的二维数组)但我想删除public $ table属性,这样我就可以直接调用这样的方法:

 "poststable" => $post -> getPosts($cat)

不幸的是,当我用这个改变我的方法代码时:

return $output;

$ data" poststable"只给我第一篇文章(数组只存储一个帖子)

任何人都知道我做错了什么?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要在 while循环中构建整个输出,之后您可以返回它。此外,您应该在循环外清理数据库。

<?php
class Post{
    public $author;
    public $cat;
    function getPosts($cat = ""){
        dbstart();
        global $dbconn;

        empty($cat) 
            ? $query = mysqli_query($dbconn, "SELECT * FROM pytania") 
            : $query = mysqli_query($dbconn, "SELECT * FROM pytania WHERE cat = $cat");

        // Use an array as your return value
        $output = [];
        while($row = mysqli_fetch_assoc($query)){
            // Build up the array
            $output[] = $row;
        }

        // Do your clean up out here
        dbstop();

        // Now return the result
        return $output;
    }       

}