我试图从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"]
这是如何运作的?
答案 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;
除非该类用于组合一些函数和变量以创建行为,否则无需将其放在类中。