【问题标题】:Codeigniter PHP Ajax returns array brackets onlyCodeigniter PHP Ajax 仅返回数组括号
【发布时间】:2017-09-28 15:34:52
【问题描述】:

我有一个函数,它返回一个结构如下的数组

[[{"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 编码数组,但它似乎没有出来。

【问题讨论】:

    标签: javascript php arrays ajax codeigniter


    【解决方案1】:

    如果$result 的字面意思如您在上面打印的那样,那么它不是 PHP 数组,只是 JSON 格式的字符串。 PHP 无法解释它,直到您对其进行解码。您的for 循环是浪费时间,因为您总是将$result 的第一个索引分配给您的$result_errors 变量。在 PHP 中,如果您尝试获取字符串的索引,您只需获取字符串中该位置的字符。 $result的第一个字符是“[”。

    如果您尝试从该响应中获取第一个数组,则需要将 JSON 解码为 PHP 数组,选择第一个内部数组,然后将其重新编码回 JSON 以进行输出,如下所示:

    $array = json_decode($result);
    echo json_encode($array[0]);
    

    这将为您提供第一个数组,其中包含两个对象。如果这不是您想要的输出,请澄清。

    【讨论】:

    • 是的!你说的对。我忘记了 $result 的返回是一个 json 数组。太感谢了!我花了很多时间看这个,但不明白为什么它没有正确处理
    【解决方案2】:

    我不确定你会得到你想要的,但问题是分配给$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 数组。

    【讨论】:

    • 是的! @ADyson 是对的。非常感谢您的帮助!
    猜你喜欢
    • 2020-10-28
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多