繁体   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