2016-09-22 88 views
-2

代码语言:PHP需要帮助的数组操作

其实我不是专家数组操作 我已经试过太多,但没有获得成功。 请检查以下数组我想转换它。

我有这种类型的数组

[ 
     { 
     "user_id": "1", 
     "name": "A", 
     "product": "Product A", 
     "price": "456" 
     }, 
     { 
     "user_id": "1", 
     "name": "A", 
     "product": "Product B", 
     "price": "255" 
     }, 
     { 
     "user_id": "1", 
     "name": "A", 
     "product": "Product C", 
     "price": "111" 
     }, 
     { 
     "user_id": "2", 
     "name": "B", 
     "product": "Product D", 
     "price": "888" 
     }, 
     { 
     "user_id": "2", 
     "name": "B", 
     "product": "Product E", 
     "price": "408" 
     } 
    ] 

我想将它转换为以下

[ 
    { 
    "user_id": "1", 
    "name": "A", 
    "product_data": [ 
     { 
     "product": "Product A", 
     "price": "456" 
     }, 
     { 
     "product": "Product B", 
     "price": "255" 
     }, 
     { 
     "product": "Product C", 
     "price": "111" 
     } 
    ] 
    }, 
    { 
    "user_id": "2", 
    "name": "B", 
    "product_data": [ 
     { 
     "product": "Product D", 
     "price": "888" 
     }, 
     { 
     "product": "Product E", 
     "price": "408" 
     } 
    ] 
    } 
] 

请帮我解决了这个..

+2

您可以使用'json_decode()'进行转换的一个PHP数组,并从那里,你可以在它运行'的foreach()'循环,帮助你建立输出数组。你会试试吗?我们不是这里的按需代码服务。您的解决方案不必完成 - 我们只是想看到一些努力。 – halfer

+1

不仅我们想看到一些努力。我们想从那里工作并修理或完成它。 – arkascha

+0

维韦克,请给在PHP结构对象不是JS对象 –

回答

1

您可以通过的foreach达到这个()和array_key_exists()函数。请看下面的代码,它可以帮助你:

<?php 

    $json ='[{ 
    "user_id": "1", 
    "name": "A", 
    "product": "Product A", 
    "price": "456" 
    }, 
    { 
    "user_id": "1", 
    "name": "A", 
    "product": "Product B", 
    "price": "255" 
    }, 
    { 
    "user_id": "1", 
    "name": "A", 
    "product": "Product C", 
    "price": "111" 
    }, 
    { 
    "user_id": "2", 
    "name": "B", 
    "product": "Product D", 
    "price": "888" 
    }, 
    { 
    "user_id": "2", 
    "name": "B", 
    "product": "Product E", 
    "price": "408" 
    }]'; 
    $source_array = json_decode($json); 
    $result_arry = array(); 
    foreach($source_array as $entry) 
    { 
     if(array_key_exists($entry->user_id,$result_arry)) 
     { 
         $result_arry[$entry->user_id]['product_data'][] = array('product' => $entry->product,'price'=>$entry->price); 
     } 
     else 
     { 

     $result_arry[$entry->user_id] = array('user_id' =>$entry->user_id,'name'=>$entry->name,'product_data'=>array()); 
     $result_arry[$entry->user_id]['product_data'][] = array('product' => $entry->product,'price'=>$entry->price); 
     } 

    } 
    print_r($result_arry);