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