2011-08-07 151 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

哦;對不起,不太明白這個問題:-( –