簡體   English   中英

在數組操作方面需要幫助

[英]Need help in array manipulation

代碼語言: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"
      }
    ]
  }
]

請幫我解決這個問題..

您可以通過 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM