我想在一个数组中推送一些项目,这里是结构:
$str = 'String';
$a = array('some', 'sub', 'page');
我希望将项目推送到其他应该成为的数组:
Array (
[some] => Array (
[sub] => Array (
[page] => String
)
)
)
我不知道如何解释它,所以希望这个例子能给你看一些东西。 我希望第一个数组(a)中的任何新元素被推送为普通数组的子数组,最后一个数组来自$ str;
$string = 'My Value';
$my_first_array = array('my', 'sub', 'arrays');
然后一些函数解析$ my_first_array并将其转换为:
示例:
ob_start('nl2br');
$my_parsed_sub_array = parse_sub_arrays($my_first_array, $string);
print_r($my_parsed_sub_array);
===>>>
Array (
[my] => Array (
[sub] => Array (
[arrays] => String
)
)
)
答案 0 :(得分:5)
[编辑]我希望,这一次,我已经理解了这个问题......
如果您的字符串和数组如下:
$str = 'test';
$a = array('some', 'sub', 'page');
您可以先用这种方式初始化生成的数组,处理最后一项的特殊情况:
$arr = array($a[count($a)-1] => $str);
然后,您可以循环遍历$a
数组的每个项目,从结尾开始(并且不处理我们已经处理过的最后一项):< / p>
for ($i=count($a) - 2 ; $i>=0 ; $i--) {
$arr = array($a[$i] => $arr);
}
这样,转储生成的数组:
var_dump($arr);
应该得到预期的结果:
array
'some' =>
array
'sub' =>
array
'page' => string 'test' (length=4)
下面的旧答案,在理解问题之前:
你可以用这种方式声明你的数组:
$arr = array(
'some' => array(
'sub' => array(
'page' => $str,
),
),
);
或者,使用几个不同的步骤(可能更容易,取决于您构建子数组的方式,尤其是在比当前示例更复杂的情况下):
$sub2 = array('page' => $str);
$sub1 = array('sub' => $sub2);
$arr = array('some' => $sub1);