数组转换为另一个数组

时间:2013-10-02 08:07:47

标签: php arrays multidimensional-array shuffle

在我的项目中,我有以下类型的数组。请帮我找出解决方案。 数组如下,请参考。 它看起来像是关注。

 [0] => Array
     (
            [Notification] => Array
               (
                  [id] => 135
                  [notification_date] => 2013-09-18
                  [short_desc] => dsfdfdfdf
                  [long_desc] =>
               )

             [NotificationProduct] => Array
                 (
                    [0] => Array
                       (
                           [id] => 41
                           [notification_id] => 135
                           [product_id] => 20
                           [Product] => Array
                                 (
                                   [id] => 20
                                   [category_id] => 2
                                   [name] => asasasa
                                  )

                      )

                     [1] => Array
                       (
                         [id] => 42
                         [notification_id] => 135
                         [product_id] => 21
                         [Product] => Array
                                 (
                                   [id] => 21
                                   [category_id] => 2
                                   [name] => corn flakcf

                                  )

                         )

                  )

    )

我有以上类型的数字。现在我想将其转换为以下方式:

 [0] => Array
     (
            [Notification] => Array
               (
                  [id] => 135
                  [notification_date] => 2013-09-18
                  [short_desc] => dsfdfdfdf
                  [long_desc] =>
               )

             [NotificationProduct] => Array
                 (
                    [0] => Array
                       (
                           [id] => 41
                           [notification_id] => 135
                           [product_id] => 20
                           [name] => asasasa
                      )

                     [1] => Array
                       (
                         [id] => 42
                         [notification_id] => 135
                         [product_id] => 21
                         [name] => corn flakcf
                        )

                )
  )
 Is there any way to convert it into that kind of array.

谢谢!

3 个答案:

答案 0 :(得分:0)

   $name = $array[0]['NotificationProduct'][0]['product']['name']
   unset($array[0]['NotificationProduct'][0]['product'])
   $array[0]['NotificationProduct'][0]['name'] = $name;

$array[0]['NotificationProduct'][1]['product']

执行相同的操作

答案 1 :(得分:0)

尝试以下操作:

            $counter = 0;
            $responseArray = array();
            foreach($notifications as $notification){
               $responseArray[$counter]['Notification'] = $notification['Notification'];
               $counter1 = 0;
               foreach($notification['NotificationProduct'] as $notificationProduct){
                   $responseArray[$counter]['NotificationProduct'][$counter1]['product_id'] = $notificationProduct['product_id'];
                   $responseArray[$counter]['NotificationProduct'][$counter1]['product_name'] = $notificationProduct['Product']['name'];
                   $responseArray[$counter]['NotificationProduct'][$counter1]['product_desc'] = $notificationProduct['Product']['description'];
                   $counter1++;
               }
               $counter++;
            }

答案 2 :(得分:0)

假设您的数组名为$notices,请尝试以下操作:

foreach($notices AS $key => $val )
{
    if($key=='NotificationProduct')
    {
        foreach($val AS $idx => $np )
        {
            $notices[$key][$idx]['name'] = $notices[$key][$idx]['Product']['name'];
            unset($notices[$key][$idx]['Product']);
        }
    }
}