如何在孩子的水平上抚养孙辈子

时间:2018-10-18 10:24:47

标签: php arrays

我对包含多个子数组的父数组存在一些问题。子数组必须不包含其他子数组,但是如果是这样,则在子级别提升这些子孙。

[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;
}

非常感谢

1 个答案:

答案 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。