PHPで多次元配列を1次元配列にフラット化する方法


以下に、いくつかのシンプルで簡単な方法とコード例を示します。

  1. array_mergeと再帰関数を使用する方法: この方法では、array_merge関数と再帰関数を組み合わせて多次元配列を1次元配列にフラット化します。
function flattenArray($array) {
    $result = [];
    foreach ($array as $element) {
        if (is_array($element)) {
            $result = array_merge($result, flattenArray($element));
        } else {
            $result[] = $element;
        }
    }
    return $result;
}
// 使用例
$multiDimensionalArray = [[1, 2, [3]], 4, [5, [6, 7]]];
$flattenedArray = flattenArray($multiDimensionalArray);
print_r($flattenedArray);

出力:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
)
  1. array_walk_recursiveを使用する方法: この方法では、array_walk_recursive関数を使用して多次元配列を1次元配列にフラット化します。
function flattenArray(&$array, &$result) {
    array_walk_recursive($array, function($value) use (&$result) {
        $result[] = $value;
    });
}
// 使用例
$multiDimensionalArray = [[1, 2, [3]], 4, [5, [6, 7]]];
$flattenedArray = [];
flattenArray($multiDimensionalArray, $flattenedArray);
print_r($flattenedArray);

出力:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
)