-2

以下のような多次元配列があります(図1)。親配列キーと等しいすべてのサブ配列キーをキー値としてプッシュしたいだけです。

例として、親キーは 23. で、23 には子キー 24 があります。だから私が望むのは、すべての子、サブチャイルド、サブサブチャイルド...を親キー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 に答える