2016-08-04 65 views
0

返回我有以下PHP从DB和地方每一行收集数据到一个数组它然后在最后的阵列,其被返回给JavaScript地方:PHP数组空时不参照索引

$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对象。

如果我把我的while循环中我return语句,然后将数据返回:

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]); 

然后数据也被返回。

请帮我找出这一个。

+0

这是一个功能?如果不使用'echo'而不是'return' – RiggsFolly

+0

这是一个函数 – ALR

+0

将这个代码添加到您提供的代码中 – RiggsFolly

回答

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

MYSQLI_ASSOC而不是MYSQL_ASSOC – RiggsFolly

+0

ahh是的,谢谢@RiggsFolly –

+0

这只是返回一个空数组,像这样: '[]' – ALR

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); 
+0

MYSQLI_ASSOC而不是MYSQL_ASSOC – RiggsFolly

+0

没有,仍然会返回一个空字符串 – ALR

+0

的print_r($值); array_push($ data,$ value);检查$值是否为空 –