我有一个像以下的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
)
)
表示如果数组元素具有数组值,那么它将被移动到父元素。我不想要子层。请建议我如何实现
答案 0 :(得分:2)
你可以这样使用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']);
答案 1 :(得分:0)
请检查
foreach($myarray as $array){
foreach($array as $val){
$array_1[] = $val;
}
}
答案 2 :(得分:0)
这是一种方式。
$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);
答案 3 :(得分:0)
尝试这个,最佳和最佳的解决方案
$new_array['colors'] = array();
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
$list = iterator_to_array($it,false);
$new_array['colors'] = $list;
print_r($new_array);
<强> DEMO 强>