[英]Codeigniter PHP Ajax returns array brackets only
我有一個返回數組的函數,像這樣
[[{"title":"Mr","first_name":"James","last_name":"Loo","date_of_birth":36356,"email":"test@test.com","phone_number":1234567890,"company":"CompanyOne"},{"title":"Mr","first_name":"Jonah","last_name":"Lee","date_of_birth":42629,"email":"test@test2.com","phone_number":1234567890,"company":"CompanyTwo"}],
[]]
數組內有2個數組。 第一個是“未插入條目”數組,第二個是“未插入條目”數組。
但是,當我通過此函數執行代碼時
$result = $this->curl->execute();
$result_errors = array();
for($j=0;$j<sizeof($result);$j++){
$result_errors = $result[0];
}
if(sizeof($result_errors)>0){
echo json_encode($result_errors);
}
我在控制台中得到的結果僅為“ [”。
我想念什么嗎? 我讀過我必須回顯和json編碼數組,但它似乎沒有出來。
如果$result
確實如您上面打印的那樣,則它不是PHP數組,而只是JSON格式的字符串。 PHP在解碼之前無法解釋它。 for
循環是浪費時間,因為您總是將$result
的第一個索引分配給$result_errors
變量。 在PHP中,如果您嘗試獲取字符串的索引,則只需獲取字符串中該位置的字符。 $result
的第一個字符是“ [”。
如果嘗試從響應中獲取第一個數組,則需要將JSON解碼為PHP數組,選擇第一個內部數組,然后將其重新編碼回JSON以進行輸出,如下所示:
$array = json_decode($result);
echo json_encode($array[0]);
這將為您提供第一個數組,其中包含兩個對象。 如果這不是您想要的輸出,請進行說明。
我不確定您是否會得到想要的,但是問題是給$result_errors
賦值了。 該var應該是一個數組,但是當您分配賦值$result_errors = $result[0];
您將其從數組更改為$result[0]
處的任何值; 嘗試這個
for($j=0;$j<sizeof($result);$j++){
$result_errors[] = $result[0];
}
我對您的問題是:由於$ result顯然是一個數組(如$result[0]
),那么為什么不簡單地這樣做呢?
echo json_encode($result);
一個建議:代替sizeof
使用count
。
if(count($result_errors) > 0)
{
echo json_encode($result_errors);
}
count
不太可能被他人誤解。 在其他編程語言中,它具有完全不同的含義。
哦,@ ADyson的回答正確地指出了將json字符串解碼為PHP數組的需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.