如何在php中的函数中返回多个对象,然后显示它们

时间:2018-03-06 11:32:53

标签: php

public function getdata()
{
    $ctrObj =  new Country();
    $result = $ctrObj->ctrydata($this->table);
    if(mysqli_num_rows($result)>0){
        while ($row = mysqli_fetch_array($result)) {
            return $row;
        }
    }
}
$ctryObj = new CountryController();
$countries = $ctryObj->getdata();
print_r($countries);

当我print_r($countries);时,我只能看到一个对象,但如果我在上面提到的函数中打印出来,我找到了所有对象。

3 个答案:

答案 0 :(得分:3)

您可以将结果保存在数组中并将其返回:

public function getdata()
{
    $data = []; // Init array
    $ctrObj =  new Country();
    $result = $ctrObj->ctrydata($this->table);
    if(mysqli_num_rows($result)>0){
        while ($row = mysqli_fetch_array($result)) {
            $data[] = $row; // Populate it
        }
    }
    return $data; // Return it
}

答案 1 :(得分:0)

因为您只返回一个结果,所以可以像这样更改

public function getdata()
    {
    $ctrObj =  new Country();
    $result = $ctrObj->ctrydata($this->table);
    $rows = [];
    if(mysqli_num_rows($result)>0){
        while ($row = mysqli_fetch_array($result)) {
             $rows[] = $row;
         }
     }
    return $rows;
   }

答案 2 :(得分:0)

你可以屈服:

public function getdata()
{
    $ctrObj =  new Country();
    $result = $ctrObj->ctrydata($this->table);
    if(mysqli_num_rows($result)>0){
        while ($row = mysqli_fetch_array($result)) {
            yield $row;
        }
    }
}

你会像这样使用它(对记忆有很多好处......):

$ctryObj = new CountryController();
foreach ($ctryObj->getdata() as $country) {
    print_r($country);
}

编辑:我已经学习了PDO并且从未接触过mysqli,所以我试图找到fetchAll()的等价物,显然,你也有一个fetch all函数({{3 }})。

我认为您的代码看起来像这样:

public function getdata()
{
    $ctrObj =  new Country();
    $result = $ctrObj->ctrydata($this->table);
    if (mysqli_num_rows($result) > 0) {
        $rows = mysqli_fetch_all($result);

        return $rows;
    }
}

这样看起来更有效率,让所有对象逐个绑定到一个数组中(因为它本身就是由php完成的)。无论如何,如果你不想复制结果缓冲区(一个用于mysql端,另一个用于php端),请使用yield