如何在PHP中将二维数组转换为一维数组?

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函数将其转换?

还有其他方法吗?


6个回答

15

你可以尝试

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

var_dump($l); // one Dimensional 

同时,我们还可以使用sort($l)函数对数组中的元素进行排序;$l = array_unique($l)则可用于删除数组中的重复元素并为新数组提供适当索引。 - Durgesh Sonawane

2

请尝试以下方法:

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

foreach ( $input as $data ) {
  $output = array_merge($output, $data);
}

只需使用 $final 而不是 $input - hsz

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

0

这应该能解决问题

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

如果你的 PHP >= 5.3,你也可以使用 array_reduce()

$final = array_reduce($outer, function($_, $inner){
  return $_ = array_merge((array)$_, $inner);
});
var_dump($final);

0

如果您需要处理多维数组的通用函数,请查看此函数,

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

你可以在这里找到一个例子。


0

通过使用此函数,您可以将任何维度的数组转换为单个维度的数组。

$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 是您给定的数组值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接