簡體   English   中英

Codeigniter PHP Ajax僅返回數組括號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM