-2

我有一个如下所示的多维数组(图 1)。我只想将所有等于父数组键的子数组键作为键值推送。

例如,父键是 23。而 23 有一个子键 24。子键 24 有子子键 (25,26,27....),子子键也可能有另一个子键。所以我想要的是将所有的孩子、子孩子、子孩子......推到父键 23。见图 2。

如果有人能为此提出解决方案,我真的很感激。

非常感谢..

图1

Array ( [
  18] => Array ( 
    [1] =>
    [14] =>
  )
  [23] => Array ( 
    [24] =>
  ) 
  [24] => Array ( 
    [25] =>
    [26] =>
  )
 [26] => Array ( 
    [27] =>
    [28] =>
  )

)

图 2

Array ( [
  18] => Array ( 
    [1] =>
    [14] =>
  ) 
  [23] => Array ( 
    [24] => Array ( 
       [25] =>
       [26] => Array ( 
          [27] =>
          [28] =>
       )
     )
  )
)
4

1 回答 1

0

呵呵,幸运的是,我在学校一整天都无事可做

我离开那里评论了我快速调试的回声

我的输出:

Array 
(
    [18] => Array
        (
        [1] =>
        [14] =>
        ) 
    [23] => Array
        ( 
        [24] => Array
            ( 
            [25] =>
            [26] => Array
                ( 
                [27] =>
                [28] =>
                )
            )
        )
)

代码

<?php
function test ($scan, $where="array")
{
    global $array;
    global $position;
    //echo("\r\n New dimension: ".$where);

    foreach ($scan as $key => $value)
        {
            //echo("\r\n Scanning: ".$where."[".$key."]");
            if ( !isset($position[$key]) )
            {
                $position[$key] = $where."[".$key."]";
                //echo("\r\n Key position ".$key." set on: ".$position[$key]);
                //print("\r\n $position[$key]");
            }
            else
            {
                //echo("\r\n Key ".$key." is already set on position: ".$position[$key]);
                $old = ("\$".$where."[".$key."]");
                $cmd = ("\$".$position[$key]." = &".$old);
                //print("\r\n ".$cmd);
                eval("$cmd;");
                eval("unset ($old);");
            }
            if ( is_array($value) )
            {
                //echo("\r\n Enterring: ".$where."[".$key."]");
                test($value, $position[$key]);
                //echo("\r\n Enterring: ".$where);
            }
        }
    //echo("\r\n Exiting: ".$where);
}

print_r($array);
test($array);
print_r($array);
?>
于 2013-09-06T12:54:28.573 回答