如何将简单的php数组转换为带头的json数据

Posted

技术标签:

【中文标题】如何将简单的php数组转换为带头的json数据【英文标题】:How to convert simple php array into json data with heads 【发布时间】:2021-08-12 06:39:14 【问题描述】:

我在 WordPress 中获取帖子对象数据,这是我的代码

$pre_items = get_post_meta( $post_object->ID, 'rudr_select2_tags');

print_r 为我提供这些数据

Array ( [0] => Array ( [Apple iPhone 5,Apple iPhone 6] => 1 ) )

我已经写了下面的代码

  $pre_items = get_post_meta( $post_object->ID, 'rudr_select2_tags');
  $new_arr = array();

  foreach($pre_items as $arr)
    $process_array = array();
    $process_array['id'] = $arr;
    $process_array['name'] = $arr;
    array_push($new_arr,$process_array);
   

   $items = json_encode($new_arr);  

但此代码返回数据

["id":"Apple iPhone 5,Apple iPhone 6":1,"name":"Apple iPhone 5,Apple iPhone 6":1]

但我想要以下格式的数据

[id: Apple iPhone 5, name: "Apple iPhone 5",
id: Apple iPhone 6, name: "Apple iPhone 5"
]

请帮助如何实现这一点。

【问题讨论】:

【参考方案1】:

将第三个参数添加到 get_post_meta 以切换单个值的返回,并分解数组键以分隔设备以便根据您的示例构造数据。

$pre_items = get_post_meta( $post_object->ID, 'rudr_select2_tags', true);
$new_arr = array();

foreach($pre_items as $key => $value )

    // Split key into array.
    $devices = explode( ',', $key );

    // name is set to first device.
    $name = $devices[0];

    foreach ( $devices as $device ) 
        $process_array = array(
            'id' => $device,
            'name' => $name,
        );
        array_push($new_arr, $process_array);
    



$items = json_encode($new_arr);  

【讨论】:

谢谢,可以了,只是第7行$key前少了一个逗号

以上是关于如何将简单的php数组转换为带头的json数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 将 JSON 字符串数据转换为数组?

PHP/jQuery - 如何将多维 PHP 数组转换为 JSON 字符串?

如何把对象转化为字符串 php

php如何将json对象转字符串

如何将php json数组转换为yaml

怎样将json数据转换成匿名数组或者泛型对象(c#)