4

私は以下のような結果を得る多次元配列を持っています

Array
(
    [0] => Array
        (
            [0] => 70
        )

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

    [2] => Array
        (
            [0] => 75
            [1] => 73
            [2] => 68
        )

    [3] => Array
        (
            [0] => 68
        )

    [4] => Array
        (
            [0] => 76
        )

)

しかし、それを単一の配列に変換する必要があります

そして、私は一次元配列に変換したい

Array
(
[0] => 70
[1] => 67
[2] => 75
[3] => 73
[4] => 68
[5] => 68
[6] => 76
)

PHP関数を使用して変換する方法は?

またはそれを行う他の方法はありますか?

4

6 に答える 6

15

あなたが試すことができます

$it =  new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
$l = iterator_to_array($it, false);

var_dump($l); // one Dimensional 
于 2012-12-21T09:56:20.200 に答える
2

試してみてください:

$input  = array(/* your array*/);
$output = array();

foreach ( $input as $data ) {
  $output = array_merge($output, $data);
}
于 2012-12-21T09:45:41.233 に答える
1

array_walk_recursive()クロージャーと組み合わせて使用​​できます:

$res = array(); // initialize result

// apply closure to all items in $data
array_walk_recursive($data, function($item) use (&$res) {
    // flatten the array
    $res[] = $item;
});

print_r($res); // print one-dimensional array
于 2012-12-21T10:18:18.780 に答える
0

これでうまくいくはずです

$final = array();
foreach ($outer as $inner) {
  $final = array_merge($final, $inner);
}
var_dump($final);

またはarray_reduce()、持っている場合は使用できますPHP >= 5.3

$final = array_reduce($outer, function($_, $inner){
  return $_ = array_merge((array)$_, $inner);
});
var_dump($final);
于 2012-12-21T09:46:03.750 に答える
0

この関数を使用すると、任意の次元配列を 1 次元配列に変換できます。

$result = array();
$data = mearchIntoarray($result,$array);
function mearchIntoarray($result,$now)
{
    global $result;
    foreach($now as $key=>$val)
    {
        if(is_array($val))
        {
            mearchIntoarray($result,$val);
        }
        else
        {
            $result[] = $val;
        }
    }
    return $result;
} 

$array は、指定した配列値です。

于 2014-06-27T15:33:01.377 に答える
0

多次元配列を処理できるより一般的な関数については、この関数を確認してください。

function  arrayFlattener($input = array(), &$output = array()) {
  foreach($input as $value) {
    if(is_array($value)) {
        arrayFlattener($value, $output);
    } else {
        $output[] = $value;
    }
  }
}

ここで例を見つけることができます。

于 2012-12-21T10:42:28.147 に答える