返回时,php数组为空而不引用索引

时间:2016-08-04 11:32:18

标签: php arrays

我有以下PHP从数据库中收集数据并将每行放入一个数组中,然后将其放入最终数组中,然后返回给JavaScript:

$active = /*some SQL statement*/
$result = mysqli_query($GLOBALS['con'], $active);

$data = array();

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){

    $value = array( 
        "id"=>$row["quest"],
        "received"=>$row["received"]
    );

    array_push($data, $value);
}

return json_encode($data);

我知道SQL语句正在运行且$value中包含值,但返回到JavaScript页面的数组始终是空字符串而不是JSON对象。

如果我将return语句放在while循环中,则返回数据:

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){

    $value = array( 
        "id"=>$row["quest"],
        "received"=>$row["received"]
    );

    array_push($data, $value);
    return json_encode($data);

}

但显然在循环完成后,这并没有按照我想要的方式返回数据。

如果我将return语句更改为:

return json_encode($data[1]);

然后还返回数据。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

尝试使用以下更改的代码

$active = /*some SQL statement*/
$result = mysqli_query($GLOBALS['con'], $active);

$data = array();

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
    $value = array( 
        "id"=>$row["quest"],
        "received"=>$row["received"]
    );
   $data[]=$value; // this is trick 
}

return json_encode($data);

答案 1 :(得分:0)

试试这个:

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){

$value = array( 
    "id"=>$row["quest"],
    "received"=>$row["received"]
);

array_push($data, $value);

}

return json_encode($data);