php class return 数组

php class return array

我试图使用这个 class

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;
    }
}

然后我初始化这个class

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

然后我得到

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

但我想要的只是得到这个

["1234","456"]

效果如何?

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

尽管如此,在这种情况下制作 class 是完全过时的,因为您只将它作为要执行的单个函数(称为 get_followers)的包装器,而不是制作 class,你可以简单地做如下:

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;

没有必要将它放在 class 中,除非 class 用于组合一些函数和变量以创建行为的目的。

我认为您不了解构造函数的工作原理。您不能 return 来自构造函数的值,因为它仅用于实例化对象。当您执行 $fol_arr = json_encode($fol); 时,您实际上是在对整个对象进行编码,而不是 return 值。

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

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;