2011-08-07 71 views
3

我要推在一个阵列中的一些项目,这里是结构:PHP把阵列,阵列

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

回答

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

不,不,你没有得到point.I想拍一些算法来分析第一阵列(一)子阵列和从$一个最后有值$ str.I想要使这个自动通过代码matically,而不是手动。它很复杂,对不起,我不能说更好。 –

+0

我会尽力在第一篇文章中更好地解释它,不是那样。 –

+0

哦;对不起,不太明白这个问题:-( –