php打印數(shù)組類型與前端交互的小bug

圖片發(fā)自簡書App

? 在開發(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有幫助!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,934評論 0 13
  • 關于Mongodb的全面總結 MongoDB的內部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,328評論 2 89
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,699評論 19 139
  • // +-----------------------------------------------------...
    Robinbing閱讀 1,520評論 0 0
  • 01 三月的天空,白云飄浮,飛鳥劃下的地方,立著座座青山。 柳絮在墻角飛舞,旋風般,騰起、下落,時而追逐,時而停滯...
    你是隨機者閱讀 216評論 0 0

友情鏈接更多精彩內容