php将数组放入数组中

Ale*_*lov 3 php arrays push

我想在一个数组中推送一些项目,这里是结构:

$str = 'String';
$a = array('some', 'sub', 'page');
Run Code Online (Sandbox Code Playgroud)

我想将项目推送到应该成为的其他数组:

Array (
   [some] => Array (
      [sub] => Array (
         [page] => String
      )
   )
)
Run Code Online (Sandbox Code Playgroud)

我不知道如何解释它,所以希望这个例子能告诉你一些事情.我希望第一个数组(a)中的任何新元素作为普通数组的子数组推送,最后一个元素从$ str获取值;

$string = 'My Value';
$my_first_array = array('my', 'sub', 'arrays');
Run Code Online (Sandbox Code Playgroud)

然后一些函数解析$ my_first_array并将其传递为:

例:

ob_start('nl2br');
$my_parsed_sub_array = parse_sub_arrays($my_first_array, $string);
print_r($my_parsed_sub_array);
Run Code Online (Sandbox Code Playgroud)

=== >>>

Array (
   [my] => Array (
      [sub] => Array (
         [arrays] => String
      )
   )
)
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 5

[编辑]我希望,这一次,我已经理解了这个问题......

如果你有你的字符串和数组:

$str = 'test';
$a = array('some', 'sub', 'page');
Run Code Online (Sandbox Code Playgroud)

您可以先用这种方式初始化生成的数组,处理最后一项的特殊情况:

$arr = array($a[count($a)-1] => $str);
Run Code Online (Sandbox Code Playgroud)

然后,您可以$a从最后开始循环遍历数组中的每个项目(而不是处理我们已经处理过的最后一个项目):

for ($i=count($a) - 2 ; $i>=0 ; $i--) {
    $arr = array($a[$i] => $arr);
}
Run Code Online (Sandbox Code Playgroud)

有了这个,转储结果数组:

var_dump($arr);
Run Code Online (Sandbox Code Playgroud)

应该得到你预期的结果:

array
  'some' => 
    array
      'sub' => 
        array
          'page' => string 'test' (length=4)
Run Code Online (Sandbox Code Playgroud)



在理解问题之前,在下面给出旧答案:

您可以这样声明您的数组:

$arr = array(
    'some' => array(
        'sub' => array(
            'page' => $str, 
        ), 
    ), 
);
Run Code Online (Sandbox Code Playgroud)


或者,使用几个不同的步骤(可能更容易,取决于您构建子数组的方式,尤其是在比当前示例更复杂的情况下):

$sub2 = array('page' => $str);
$sub1 = array('sub' => $sub2);
$arr = array('some' => $sub1);
Run Code Online (Sandbox Code Playgroud)