【问题标题】:Error in json data using php json_encode for php array使用 php json_encode 用于 php 数组的 json 数据出错
【发布时间】:2021-07-01 23:26:07
【问题描述】:

我在循环中将数据保存在 php 数组中,然后使用 json_encode 函数。这是我的代码

foreach ($object_ids as $value) {
    $booking_data = array(
        'name' => $name, 
        'phone' => $phone, 
        'email' => $email,
    );
}
$booking_data = json_encode($booking_data,true);
print_r($booking_data);

然后就是我得到的结果

{"name":"Peter ","phone":"03008000000","email":"peter@gmail.com"}{"name":"Jessica ","phone":"03038518000","email":"jesica@gmail.com"}{"name":"Anas ","phone":"03234152099","email":"anasiqbal1992@gmail.com"}{"name":"Anas ","phone":"03234152099","email":"anasiqbal1992@gmail.com"}

当我尝试美化我得到这个错误:

编码时缺少逗号。请让我知道我的错误。

问候

【问题讨论】:

    标签: php arrays json


    【解决方案1】:

    不清楚你在这里做什么。首先,这部分...

    $booking_data = array(
      'name' => $name, 
      'phone' => $phone, 
      'email' => $email,
    );
    

    ... 将一次又一次地重写同一个变量的值 - 而不实际对其进行编码(这发生在循环之外)。由于您显然得到了一些输出,但在尝试创建示例以在 SO 中发布时,这看起来更像是一个错字。

    二、这部分:

    print_r($booking_data)
    

    ... 没有什么意义,因为 json_encode 的结果是 string,而不是数组。


    那里似乎发生的事情(根据您显示的输出)是您实际上将json_encoding 每个单独的关联数组(使用name、phone 和email 键)添加到一些数组结果中,然后尝试使用该“JSON 数组”的print_r() 表示。但这不对:用print_r 打印出来的 JSON 数组不会给出 JSON!

    与其做这一切,不如只创建一个数组数组,然后json_encode 一次呢?像这样:

    foreach ($object_ids as $value) {
        $booking_data[] = array(
            'name' => $name, 
            'phone' => $phone, 
            'email' => $email,
        );
    }
    echo json_encode($booking_data);
    

    【讨论】:

    • 非常感谢它的工作原理:) 我是新来的,学习 php 和 json。感谢您的帮助。
    猜你喜欢
    • 2012-07-28
    • 2016-06-09
    • 2018-05-21
    • 2023-04-09
    • 2012-07-29
    • 2015-05-03
    相关资源
    最近更新 更多