我有这样一个包含单元素数组的数组:
$array = [[88868], [88867], [88869], [88870]];
我需要将这个转换为一维数组。
期望输出:
[88868, 88867, 88869, 88870]
是否有任何内置/本地的PHP功能可以用于这个数组转换?
我有这样一个包含单元素数组的数组:
$array = [[88868], [88867], [88869], [88870]];
我需要将这个转换为一维数组。
期望输出:
[88868, 88867, 88869, 88870]
是否有任何内置/本地的PHP功能可以用于这个数组转换?
对于您的有限用例,这个代码就可以实现:
$oneDimensionalArray = array_map('current', $twoDimensionalArray);
当子数组中有许多条目时,可以将其更加通用化:
$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);
PHP array_merge
文档函数可以将您的数组压平:
$flat = call_user_func_array('array_merge', $array);
如果原始数组的深度超过2级,PHP中的SPL具有RecursiveArrayIterator
可用于平展它:
$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);
也可以参考: 将多维数组转换为一维数组
尝试:
$new_array = array();
foreach($big_array as $array)
{
foreach($array as $val)
{
array_push($new_array, $val);
}
}
print_r($new_array);
$oneDim = array();
foreach($twoDim as $i) {
$oneDim[] = $i[0];
}
对于二维数组,这同样适用:
array_merge(...$twoDimensionalArray)
好的。
$values = array(array(88868), array(88867), array(88869), array(88870));
foreach ($values as &$value) $value = $value[0];
虽然之前用于关闭此页面的页面上的一些答案确实适用于这个问题(例如array_merge(...$array)
),但对于这个具体的问题,有一些技巧是不适合放在其他页面的,因为输入数据结构不同。
这里的示例数据结构是由单元素索引数组组成的数组。
var_export(array_column($array, 0));
这个问题需要的就是这些。
foreach()
)和"数组解构"语法将值推入结果变量中,甚至不需要为循环编写主体。(演示)$result = [];
foreach ($array as [$result[]]);
var_export($result);
Laravel 还有一个扁平化辅助方法:Arr::flatten()
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;
}
}
}
array_merge(...$this->highlights)
是严格等效的。 - Yonn Trimoreau