
? 在開發(fā)工作中php后臺打印的json數(shù)據(jù)會經常出現(xiàn)我們意料之外的事,為了前端ajax能獲取可靠地數(shù)據(jù)通常我們會對json數(shù)據(jù)進行一些處理,包括轉換為數(shù)組、對象、可接受中文處理、數(shù)據(jù)轉碼等等。今天只談一個我最近遇到地一個關于打印數(shù)組的問題。
我們在后端獲取到一個數(shù)組數(shù)據(jù)$arr之后,通常我們會直接json_encode($arr)之后早echo或者exit截止輸出。但是這樣有時候會出現(xiàn)一些詭異地畫風。
$result = $db -> getAll("SELECT id,name,state FROME table1");
$ara = array();
foreach($result as $key => $value){
? ? if(!$value['state']) continue;
? ? $ara['id'] = $value['id];
? ? $ara['name'] = $value['name];
? ? $ara['state'] = $value['state];
}
header('Content-Type: application/json');
exit(json_encode($ara));
這個時候理應返回一個json數(shù)組。但其實這樣時可能會出錯地,$ara是一個索引數(shù)組,經過測試當數(shù)組沒有第0個元素地時候返回地數(shù)組佳將會以對象地形式返回。這時候前端是獲取不到數(shù)據(jù)date地length等屬性,因為返回地是對象而不是數(shù)組。
解決方法
$result = $db -> getAll("SELECT id,name,state FROME table1");
$ara = array();
foreach($result as $key => $value){
? ? if(!$value['state']) continue;
? ? $ara['id'] = $value['id];
? ? $ara['name'] = $value['name];
? ? $ara['state'] = $value['state];
}
header('Content-Type: application/json');
$ara = array_values($ara);
exit(json_encode($ara,true));
我們用array_values()函數(shù)重新排序了原數(shù)組,當然如果該數(shù)組地索引數(shù)據(jù)是有意義地就需要尋找其它地方法。
希望能對各位coder有幫助!