我有一个php数组:-
Array
(
[colors] => Array
(
[0] => white
[1] => Yellow
[2] => Black
[3] => white
[4] => Array
(
[0] => white
[1] => Black
)
[5] => Array
(
[0] => white
[1] => Black
)
[6] => white
[7] => red
)
)
现在我想输出如下:
Array
(
[colors] => Array
(
[0] => white
[1] => Yellow
[2] => Black
[3] => white
[4] => white
[5] => Black
[6] => white
[7] => Black
[8] => white
[9] => red
)
)
表示如果数组元素有数组值,那么它将被移动到父元素。我不想要子层。
您可以这样使用array_splice()
:
for ($i=0; $i<count($arr['colors']); $i++) {
if (is_array($arr['colors'][$i])) {
array_splice($arr['colors'], $i, 1, $arr['colors'][$i]);
}
}
或者不妨创建一个函数,让它进行单行调用:
function flattenArray($arr) {
for ($i=0; $i<count($arr); $i++) {
if (is_array($arr[$i])) {
array_splice($arr, $i, 1, $arr[$i]);
}
}
return $arr; // flattened array
}
$result = flattenArray($arr['colors']);
请检查
foreach($myarray as $array){
foreach($array as $val){
$array_1[] = $val;
}
}
有个办法。
$someArray = ['YOUR_ARRAY_HERE'];
$newArray = [];
foreach ($someArray as $value) {
if(is_array($value)) {
foreach ($value as $innerValue) {
array_push($newArray, $innerValue);
}
continue;
}
array_push($newArray, $value);
}
print_r($newArray);
试试这个,最佳最优解
$new_array['colors'] = array();
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
$list = iterator_to_array($it,false);
$new_array['colors'] = $list;
print_r($new_array);