как объединить массив ключей в массив - PullRequest
1 голос
/ 15 апреля 2011

и у меня проблема (для меня это большая проблема): (

хорошо, у меня есть такой массив, как ...

    Array(
    [0] => Array
        (
            [id] => 1
            [order_sn] => EU/2011/04/PO/5
            [total] => 65
        )

    [1] => Array
        (
            [id] => 1
            [order_sn] => EU/2011/04/RS/4
            [total] => 230
        )

    [2] => Array
        (
            [id] => 1
            [order_sn] => EU/2011/04/RS/3
            [total] => 130
        )

    [3] => Array
        (
            [id] => 2
            [order_sn] => EU/2011/04/RS/2
            [total] => 100
        )
    [4] => Array
        (
            [id] => 2
            [order_sn] => EU/2011/04/RS/1
            [total] => 60
        )
)

как объединить их, если массив имеет одинаковое значение ключа ...?

результат, который мне нужен, выглядит следующим образом ...

Array(
    [0] => Array
        (
            [id] => 1
            [detail] => Array 
            (
                [0] => Array 
                (
                    [order_sn] => EU/2011/04/PO/5
                    [total] => 65
                )
                [1] => Array
                (
                    [order_sn] => EU/2011/04/RS/4
                    [total] => 230
                )
                [2] => Array
                (
                    [order_sn] => EU/2011/04/RS/3
                    [total] => 130
                )
            )
        )

    [2] => Array
        (
            [id] => 2
            [detail] => Array 
            (
                [0] => Array 
                (
                    [order_sn] => EU/2011/04/RS/2
                    [total] => 100
                )
                [1] => Array
                (
                    [order_sn] => EU/2011/04/RS/1
                    [total] => 60
                )
            )
        )
)

Мне очень нужна помощь, и я работаю над PHP ... какой метод я должен сделать для этого случая?

Я тоже пытаюсь найти в Google и здесь ... но я не знаю ключевое слово>. <</p>

Большое спасибо раньше :) 1023 *

считай, Stecy

Ответы [ 4 ]

3 голосов
/ 15 апреля 2011

Попробуй так:

<?php
$result = array();
foreach ($my_array as $v) {
  $id = $v['id'];
  $result[$id]['id'] = $id;
  $result[$id]['detail'][] = array(
    'order_sn' => $v['order_sn'],
    'total'    => $v['total'],
  );
}
0 голосов
/ 15 апреля 2011
foreach($origianlArray as $key => $value){

 $newArray[$value['id']]['id'] = $value['id'];
 $newArray[$value['id']]['detail'][] = array('order_sn' => $value['order_sn'], 'total' => $value['total']);
}
0 голосов
/ 15 апреля 2011

Вы можете просто зациклить массив и создать результирующий:

// $a is your array
$r=array();
foreach($a as $v)
    $r[$v['id']][]=array('order_sn'=>$v['order_sn'], 'total'=>$v['total']);
echo'<pre>';
var_dump($r);

Поскольку вы выполняете очистку по идентификатору, целесообразно иметь его в качестве ключа и все данные, связанные с ним, какЗначение.Нет необходимости также иметь id и detail.

0 голосов
/ 15 апреля 2011

Проверьте функцию PHP array_merge .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...