doujian1954 2016-02-03 02:42
浏览 452
已采纳

如何在php中拆分JSON数组

I manage to get the data I want from database using array_push and encode it into JSON in PHP. The results I get are like below,

{
"name":[
    "Lucky Draw Ticket",
    "KIP Voucher RM10",
    "KIP Voucher RM20",
    "KIP Voucher RM50"
],
"image":[
    "\/l\/u\/lucky_draw_ticket_1.jpg",
    "\/c\/a\/cash-voucher.jpg",
    "\/c\/a\/cash-voucher2.jpg",
    "\/c\/a\/cash-voucher50_1.jpg"
],
"price":[
    "50.0000",
    "1500.0000",
    "2500.0000",
    "5000.0000"
]}

But now I want to separate it into something like below, but I don't know how to do.

{
"catalog":[
   {
   "name": "Lucky Draw Ticket",
   "image": "\/l\/u\/lucky_draw_ticket_1.jpg",
   "price": "50.0000"
   },
   {
   "name": "KIP Voucher RM10",
   "image": "\/c\/a\/cash-voucher.jpg",
   "price": "1500.0000"
   },
   {
   "name": "KIP Voucher RM20",
   "image": "\/c\/a\/cash-voucher2.jpg",
   "price": "2500.0000"
   },
   {
   "name": "KIP Voucher RM20",
   "image": "\/c\/a\/cash-voucher50_1.jpg"
   "price": "5000.0000"
   }
]}
  • 写回答

5条回答 默认 最新

  • dqeonr8554 2016-02-03 03:15
    关注

    Try this:

    • create a Json object from the Json string,
    • reorganize the object into a temporary PHP array,
    • create a Json object (string) from the PHP arrray.

    Code

    <?php
        $sjson='{
    "name":[
        "Lucky Draw Ticket",
        "KIP Voucher RM10",
        "KIP Voucher RM20",
        "KIP Voucher RM50"
    ],
    "image":[
        "\/l\/u\/lucky_draw_ticket_1.jpg",
        "\/c\/a\/cash-voucher.jpg",
        "\/c\/a\/cash-voucher2.jpg",
        "\/c\/a\/cash-voucher50_1.jpg"
    ],
    "price":[
        "50.0000",
        "1500.0000",
        "2500.0000",
        "5000.0000"
    ]}';
    $tarray = json_decode($sjson);
    $newarray = array('catalog'=>array());
    foreach($tarray->name as $ix => $name) {
        $newarray['catalog'][]=array(
            'name'  => $tarray->name[$ix],
            'image' => $tarray->image[$ix],
            'price' => $tarray->price[$ix],
        );
    }
    $sjson = json_encode($newarray);
    // echo '<pre>'; var_dump($sjson); echo '</pre>';
    ?>
    

    Result

    {
        "catalog":[
            {
                "name":"Lucky Draw Ticket",
                "image":"\/l\/u\/lucky_draw_ticket_1.jpg",
                "price":"50.0000"
            },
            {
                "name":"KIP Voucher RM10",
                "image":"\/c\/a\/cash-voucher.jpg",
                "price":"1500.0000"
            },
            {
                "name":"KIP Voucher RM20",
                "image":"\/c\/a\/cash-voucher2.jpg",
                "price":"2500.0000"
            },
            {
                "name":"KIP Voucher RM50",
                "image":"\/c\/a\/cash-voucher50_1.jpg",
                "price":"5000.0000"
            }
        ]
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条