6

私はこのような配列を持っています........

Array
(
    [0] => Array
        (
            [0] => rose
            [1] => monkey
            [2] => donkey
        )

    [1] => Array
        (
            [0] => daisy
            [1] => monkey
            [2] => donkey
        )

    [2] => Array
        (
            [0] => orchid
            [1] => monkey
            [2] => donkey
        )

)

そして、私はこのようにしたい........

Array
(
    [0] => rose
    [1] => monkey
    [2] => donkey
    [3] => daisy
    [4] => monkey
    [5] => donkey
    [6] => orchid
    [7] => monkey
    [8] => donkey
)

....配列のマージを使用しましたが、配列が動的に生成され、毎回異なる配列が表示されるため、機能しません。問題は、array_merge() 関数で配列を動的に渡すことができないことです。配列の手動エントリのみを受け入れ、他の変数は受け入れません。関数は配列のみを受け入れます。

それはこのように動作します ...

$total_data = array_merge($data[0],$data[1],$data[2]);

毎回異なる数の配列を動的に生成するので、このように使用する必要があります....

$data_array = $data[0],$data[1],$data[2];

 $total_data = array_merge($data_array);

しかし、「array_merge() [function.array-merge]: Argument #1 is not an array」というエラーが表示されます......

4

2 に答える 2

22

これを試して :

$array  = your array

$result = call_user_func_array('array_merge', $array);

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

またはこれを試してください:

function array_flatten($array) {

   $return = array();
   foreach ($array as $key => $value) {
       if (is_array($value)){ $return = array_merge($return, array_flatten($value));}
       else {$return[$key] = $value;}
   }
   return $return;

}

$array  = Your array

$result = array_flatten($array);

echo "<pre>";
print_r($result);
于 2013-02-19T07:34:11.933 に答える
2

これを試して.....

       $result = array();
        foreach($data  as $dat)

          {
                foreach($dat as $d) 

                 {
                   $result[] = $d;

                 }

           }
于 2013-02-19T07:18:35.530 に答える