-1

次の配列があります。(var_dump出力)これらの同じキー要素を単一の配列に結合したいと思います。それ、どうやったら出来るの?

 array (size=3)
      'totals' => 
        array (size=3)
          0 => 
            array (size=1)
              'total' => string '4' (length=1)
          1 => 
            array (size=1)
              'total' => string '50' (length=2)
          2 => 
            array (size=1)
              'total' => string '44' (length=2)
      'styles' => 
        array (size=3)
          0 => 
            array (size=1)
              'style' => string '11' (length=2)
          1 => 
            array (size=1)
              'style' => string 'aaa' (length=3)
          2 => 
            array (size=1)
              'style' => string 'bb' (length=3)
      'colors' => 
        array (size=3)
          0 => 
            array (size=1)
              'color' => string '11' (length=2)
          1 => 
            array (size=1)
              'color' => string 'ccc' (length=3)
          2 => 
            array (size=1)
              'color' => string 'ddd' (length=3)

最終的な出力は次のようになります。

      'totals' => 
        array (size=3)
          0 => 
            array (size=1)
              'total' => string '4' (length=1)  
              'style' => string '11' (length=2)
               'color' => string '11' (length=2)

     'styles' => 
        array (size=3)
          1 => 
            array (size=1)
               'total' => string '50' (length=2)   
                'style' => string 'aaa' (length=3)
                 'color' => string 'bb' (length=3)  

      'colors' => 
        array (size=3)
          2 => 
            array (size=1)
               'total' => string '44' (length=2)
                'style' => string 'ccc' (length=3)
                 'color' => string 'ddd' (length=3)
4

2 に答える 2

1

これを試して :

注:キー=>が数値配列になることを維持していませんが、機能を実行します。

        $array = array("total"=>array(array("total"=>1),array("total"=>2),array("total"=>3)),
                "styles"=>array(array("style"=>4),array("style"=>52),array("style"=>6)),
                "colors"=>array(array("color"=>7),array("color"=>8),array("color"=>9))

);
array_unshift($array, null);
$res = call_user_func_array('array_map', $array);

echo "<pre>";
print_r($res);

出力:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [total] => 1
                )

            [1] => Array
                (
                    [style] => 4
                )

            [2] => Array
                (
                    [color] => 7
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [total] => 2
                )

            [1] => Array
                (
                    [style] => 52
                )

            [2] => Array
                (
                    [color] => 8
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [total] => 3
                )

            [1] => Array
                (
                    [style] => 6
                )

            [2] => Array
                (
                    [color] => 9
                )

        )

)
于 2013-03-06T05:04:51.910 に答える
0

たぶんこの作品

   for ($j=0; $j < count($your_array) ; $j++) { 

        for ($k=0; $k < count($your_array[0]) ; $k++) {
            if(!isset($sum[$k]))
            {
               $sum[$k]=0;
            }else{
                $sum[$k]=$sum[$k]+$your_array[$j][$k];
            }
        }
    }

そのため、サイズがどこであっても同じキーが結合されます:)

于 2013-03-06T02:23:19.050 に答える