将单元素数组的数组转换为一维数组
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));
这就是这个问题所需要的吗?
【讨论】:
以上是关于将单元素数组的数组转换为一维数组的主要内容,如果未能解决你的问题,请参考以下文章