33

我有这种数组:

Array
(
    [0] => Array
        (
            [0] => 88868
        )
    [1] => Array
        (
            [0] => 88867
        )
    [2] => Array
        (
            [0] => 88869
        )
    [3] => Array
        (
            [0] => 88870
        )
)

我需要将其转换为一维数组。我怎样才能做到这一点?

比如像这样。。

Array
(
    [0] => 88868
    [1] => 88867
    [2] => 88869
    [3] => 88870 
)

任何 php 内置功能都可用于此数组转换?

4

7 回答 7

113

对于您有限的用例,可以这样做:

$oneDimensionalArray = array_map('current', $twoDimensionalArray);

当子数组有很多条目时,这可以更概括:

$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);
于 2012-01-06T08:05:04.893 回答
19

PHP array_mergeDocs函数可以展平你的数组:

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

如果原始数组的深度高于 2 级,PHP 中的 SPL 有一个RecursiveArrayIterator可以用来展平它:

$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);

另见: 将多维数组转换为一维数组

于 2012-01-06T08:14:07.147 回答
3

尝试:

$new_array = array();
foreach($big_array as $array)
{
    foreach($array as $val)
    {
        array_push($new_array, $val);
    }    
}

print_r($new_array);
于 2012-01-06T08:09:08.957 回答
3
$oneDim = array();
foreach($twoDim as $i) {
  $oneDim[] = $i[0];
}
于 2012-01-06T08:09:36.773 回答
1

是的。

$values = array(array(88868), array(88867), array(88869), array(88870));
foreach ($values as &$value) $value = $value[0];

http://codepad.org/f9KjbCCb

于 2012-01-06T08:07:06.630 回答
0

虽然之前用于关闭此页面的页面上的一些答案确实有适合这个问题的答案。由于输入数据结构,此特定问题的某些技术不属于其他页面。

这里的示例数据结构是一个单元素索引数组。

var_export(array_column($array, 0));

这就是这个问题所需要的。

于 2021-01-17T12:51:52.707 回答
0
foreach($array as $key => $value){
   //check that $value is not empty and an array
   if (!empty($value) && is_array($value)) {
      foreach ($value as $k => $v) {
         //pushing data to new array
         $newArray[] = $v;
      }
   }
}
于 2022-02-02T15:49:39.453 回答