【问题标题】:Creating nested parent child array from one dimensional array in php从php中的一维数组创建嵌套的父子数组
【发布时间】:2015-06-10 12:06:48
【问题描述】:

我有 2 个数组。

第一个数组:

$array = array( 
   'a' => 'b',
   'b' => 'c',
   'c' => 'd',
);

第二个数组:

 $array =  Array
    (
        [a] => Array
            (
                [0] => b
                [1] => h
            )

        [b] => c
        [c] => d
        [h] => m
    )

我需要改变这个数组像

第一个数组:

Array
(
    [a] => Array
        (
            [b] => Array
                (
                    [c] => Array
                        (
                            [d] => d
                        )

                )

        )

)

第二个数组:

Array
(
    [a] => Array
        (
            [b] => Array
                (
                    [c] => Array
                        (
                            [d] => Array
                                (
                                )

                        )

                )

            [h] => Array
                (
                    [m] => Array
                        (
                        )

                )

        )

)

sirwilliam 的答案有助于解决第一个数组问题。我需要它用于多维数组。帮助解决问题。提前致谢

【问题讨论】:

  • 你所尝试的......
  • @Uchiha 我尝试了 array_walk_recursive 并使用了这个函数 function myfunction($products, $value){ foreach($products as $key => $product){ if ( $product === $value ){ 返回 $key; }else{ 返回 $product; } } }
  • 但是这里的$value是什么
  • @Jegan 你不应该在 cmets 中发布代码,你应该编辑你的问题。
  • @Uchiha 刚刚在foreach循环中传递了数组值

标签: php arrays


【解决方案1】:

你可以尝试使用&(引用):

PHP:

    $array = array( 
       'a' => 'b',
       'b' => 'c',
       'c' => 'd',
    );

    $newArray = array();
    $newArray[key($array)] = array();
    $part = &$newArray;

    foreach($array as $first => $second){
        $part = &$part[$first];
        $part[$second] = array();
    }

    echo "<pre>";
    print_r($newArray);
    echo "</pre>";

?>

结果:

Array
(
    [a] => Array
        (
            [b] => Array
                (
                    [c] => Array
                        (
                            [d] => Array
                                (
                                )

                        )

                )

        )

)

然后你可以为最后一部分创建一个循环。

【讨论】:

  • 这总是从索引'a'开始...这是期望的行为吗?
  • 如果有'cat' =&gt; 'over a tree',怎么办?
  • @sirwilliam 如果我有多维数组?你能帮我吗
  • 如果您有新问题,请提出新问题
猜你喜欢
  • 2015-09-02
  • 2020-11-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多