我对包含多个子数组的父数组存在一些问题。子数组必须不包含其他子数组,但是如果是这样,则在子级别提升这些子孙。
[0] => Array (
[0] => Array (
[name] => ...
[count] => ...
[url] => ...
[html] => ...
)
[1] => Array (
[name] => ...
[count] => ...
[url] => ...
)
[2] => Array (
[1] => Array (
[name] => ...
[count] => ...
[url] => ...
[html] => ...
)
[2] => Array (
[name] => ...
[count] => ...
[url] => ...
)
)
[3] => Array (
[name] => ...
[count] => ...
[url] => ...
)
[4] => Array (
[name] => ...
[count] => ...
[url] => ...
)
);
在示例array["2"]
包含2个数组的情况下,我希望2个数组上一层,因此成为兄弟而不是孩子。
您能以正确的功能帮助我吗?
function transformMultipleArraysTo1(array $multipleArrays = null)
{
$newArray = array();
if (!isArrayEmpty($multipleArrays)) {
foreach ($multipleArrays as $array) {
if (is_array($array)) {
foreach ($array as $singleArray) {
if (is_array($singleArray)) {
$newArray[] = $singleArray;
} else {
continue 2;
}
}
$newArray[] = $array;
}
}
}
return $newArray;
}
非常感谢
答案 0 :(得分:3)
我想出了这个解决方案,虽然不是最漂亮的,但它确实有效。
function RemoveThoseNastyGrandchildren(array $array = NULL){
foreach ($array as $ckey => $child) {
foreach($child as $gckey => $grandchild){
if(is_array($grandchild)){
$array[] = $grandchild;
array_splice($array[$ckey],$gckey);
}
}
}
$length = count($array);
for($i = 0; $i < $length ; $i++){
if(!empty($array[$i][0]) && is_array($array[$i][0])){
array_splice($array,$i,1);
$i = -1;
$length = count($array);
}
}
//print("<pre>".print_r($array,true)."</pre>"); <---- To print it pretty uncomment
return $array;
}
将遍历所有亲戚,寻找潜在的孙辈。如果它找到了这些讨厌的孙子之一,就会将其附加到父母身上,再次成为 grand 子孙。
在那之后,我们只需要解读前孙的遗体,那就是...
它遍历更改后的数组,寻找空的主体。
然后返回形状新颖的 array familytree 和 whooosh ,您便摆脱了这些GC。