PHP将数组放入数组

3

我想在一个数组中添加一些元素,这是它的结构:

$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
      )
   )
)
1个回答

5

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

如果您的字符串和数组如下:

$str = 'test';
$a = array('some', 'sub', 'page');

您可以首先这样初始化结果数组,处理最后一个项目的特殊情况:
$arr = array($a[count($a)-1] => $str);

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

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);

不,你没有理解我的意思。我想编写一些算法来将第一个数组(a)解析为子数组,并将最后一个数组元素的值赋给$str。我希望通过代码自动实现,而不是手动操作。这很复杂,抱歉我无法表达得更好。 - Alex Emilov
我会在第一篇帖子中更好地解释,不是那个问题。 - Alex Emilov
哦,抱歉,我没有完全理解这个问题 :-( - Pascal MARTIN
@Alex,我已经编辑了我的答案,希望我更好地理解了问题 :-) - Pascal MARTIN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接