将单元素数组的数组转换为一维数组

Posted

技术标签:

【中文标题】将单元素数组的数组转换为一维数组【英文标题】:Convert array of single-element arrays to one a dimensional array 【发布时间】:2012-02-04 00:20:06 【问题描述】:

我有这种数组:

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 内置功能都可用于此数组转换?

【问题讨论】:

【参考方案1】:

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

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

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

$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);

【讨论】:

我不明白“当前”。我在 doc php callable $callback 上看到,但在示例中看不到此功能或代码。我很欣赏一些例子。 @abkrim current() 函数返回数组中当前元素的值。例如:$fruits = array("banana", "apple", "orange"); echo current($fruits) //将返回“banana”,因为当前指针位于索引 0 上,即香蕉。【参考方案2】:

是的。

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

http://codepad.org/f9KjbCCb

【讨论】:

【参考方案3】:

尝试:

$new_array = array();
foreach($big_array as $array)

    foreach($array as $val)
    
        array_push($new_array, $val);
        


print_r($new_array);

【讨论】:

【参考方案4】:
$oneDim = array();
foreach($twoDim as $i) 
  $oneDim[] = $i[0];

【讨论】:

【参考方案5】:

PHP array_merge­Docs 函数可以展平你的数组:

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

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

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

另请参阅: Turning multidimensional array into one-dimensional array

【讨论】:

【参考方案6】:

虽然the page that was previously used to close this page 上的一些答案确实有适合这个问题的答案。由于输入数据结构的原因,此特定问题的某些技术不属于其他页面。

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

var_export(array_column($array, 0));

这就是这个问题所需要的吗?

【讨论】:

以上是关于将单元素数组的数组转换为一维数组的主要内容,如果未能解决你的问题,请参考以下文章

将二维 JavaScript 数组转换为一维数组 [重复]

C语言一维数组转二维数组

将二维数组转换为列表(一维)的快速方法

C语言中怎么把一维数组赋给另外一个一维数组

请问C语言中数字一维数组转换二维数组通项公式?

一个元素的二维数组列表进入java中的一维数组列表