2016-09-22 92 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);