0

私の配列は次のようなものです:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => a
            [hardware_type] => keybord
        )

    [1] => Array
        (
            [id] => 2
            [name] => b
            [hardware_type] => mouse
        )

    [2] => Array
        (
            [id] => 1
            [name] => a
            [hardware_type] => mouse
        )

    [3] => Array
        (
            [id] => 1
            [name] => a
            [hardware_type] => moniter
        )

    [4] => Array
        (
            [id] => 2
            [name] =>b
            [hardware_type] => keyboad
        )

)

このように出力する必要がありますハードウェアタイプのみをマージしたい

Array(
    [0] => Array

        (
            [id] => 1
            [name] => a
            [hardware_type] => keybord, mouse, moniter
        )
[1] => Array
    (
            [id] => 1
            [name] => b
            [hardware_type] => keyboard, mouse
        )

 )
4

1 に答える 1

0

$array説明した入力配列はどこにあり、$newarray希望する出力配列はどこにあり、のすべての値が入力例idと同じであると仮定します。name

$temp = array();

foreach ($array as $item) {
  $temp[$item['id']] = array('id' => $item['id'], 'name' => $item['name']);
  if (empty($newarray[$item['id']]['hardware_type']))
    $temp[$item['id']]['hardware_type'] = $item['hardware_type'];
  else 
    $temp[$item['id']]['hardware_type'] .= ', ' . $item['hardware_type'];
}

$newarray = array_values($temp);

を文字列のコンマ区切りリストではなく配列にしたい場合はhardware_type、代わりに次のようにします。

$temp = array();

foreach ($array as $item) {
  $temp[$item['id']] = array('id' => $item['id'], 'name' => $item['name']);
  $temp[$item['id']]['hardware_type'][] = $item['hardware_type'];
}

$newarray = array_values($temp);
于 2012-12-03T05:52:24.503 に答える