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;
我试图使用这个 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;