php类返回数组

时间:2015-01-23 11:10:01

标签: php arrays oop

我试图从MySQL使用此类

获取关注者
class get_followers {
    public $followers_arr = array();
    public function __construct($user_id) {
        $query = "select * from followsystem where following ='$user_id'";

        $q = mysql_query($query) or die(mysql_error());

        $count = mysql_num_rows($q);

        if ($count > 0) {
            while ($row = mysql_fetch_assoc($q)) {
                array_push($this->followers_arr, $row['userid']);
           }
        }

        return $this->followers_arr;
    }
}

然后我初始化这个类

$fol = new get_followers($userid);
$fol_arr = json_encode($fol);
echo $fol_arr;

然后我得到

{"followers_arr":["1234","456"]}

但我想要的只是想得到这个

["1234","456"]

这是如何运作的?

2 个答案:

答案 0 :(得分:1)

我不认为你理解构造函数是如何工作的。您无法从构造函数返回值,因为它仅用于实例化对象。当您执行$fol_arr = json_encode($fol);时,您实际上编码了整个对象,而不是它的返回值。

如果您真的想使用类来执行此操作,则应该向该类添加一个方法并使用它,如下所示:

class Followers {
    public $followers_arr = array();
    public $user_id = null;

    public function __construct($user_id) {
        $this->user_id = $user_id;            
    }

    public function get()
    {
        $query = "select * from followsystem where following ='{$this->user_id}'";

        $q = mysql_query($query) or die(mysql_error());

        $count = mysql_num_rows($q);

        if ($count > 0) {
            while ($row = mysql_fetch_assoc($q)) {
                array_push($this->followers_arr, $row['userid']);
           }
        }

        return $this->followers_arr;
    }
}

并像这样使用它:

$fol = new Followers($userid);
$fol_arr = json_encode($fol->get());
echo $fol_arr;

答案 1 :(得分:0)

问题的解决方案是执行$fol_arr = json_encode($fol->followers_arr);

尽管如此,在这种情况下创建一个类是完全过时的,因为你只将它作为你想要执行的单个函数的包装(称为get_followers)而不是创建一个类,你可以简单地以下内容:

function get_followers($user_id) {
        $followers_arr = [];
        $query = "select * from followsystem where following ='$user_id'";

        $q = mysql_query($query) or die(mysql_error());

        $count = mysql_num_rows($q);

        if ($count > 0) {
            while ($row = mysql_fetch_assoc($q)) {
                array_push($followers_arr, $row['userid']);
           }
        }

        return $followers_arr;

}

$fol = get_followers($userid);
$fol_arr = json_encode($fol);
echo $fol_arr;

除非该类用于组合一些函数和变量以创建行为,否则无需将其放在类中。