2013-06-19 118 views
3

說,一個數組,我們有一個數組:array(1,2,3,4,...) 我想將其轉換爲:如何創建一個嵌套的數組出PHP

array(
    1=>array(
     2=>array(
      3=>array(
       4=>array() 
      ) 
     ) 
    ) 
) 

有人能幫忙嗎?
謝謝

編輯這將是很好的解決方案迭代。

+2

聽起來有點unlogical。你需要什麼? –

+1

** Q **。如何從數組中創建一些東西? **一個**。使用循環。 –

+0

小心與我們分享您爲什麼要這樣做?很難想象任何情況下,你會需要它。 – George

回答

8
$x = count($array) - 1; 
$temp = array(); 
for($i = $x; $i >= 0; $i--) 
{ 
    $temp = array($array[$i] => $temp); 
} 
4

那麼,嘗試這樣的事情:

$in = array(1,2,3,4); // Array with incoming params 
$res = array();  // Array where we will write result 
$t = &$res;   // Link to first level 
foreach ($in as $k) { // Walk through source array 
    if (empty($t[$k])) { // Check if current level has required key 
    $t[$k] = array(); // If does not, create empty array there 
    $t = &$t[$k];  // And link to it now. So each time it is link to deepest level. 
    } 
} 
unset($t); // Drop link to last (most deep) level 
var_dump($res); 
die(); 

輸出:

array(1) { 
    [1]=> array(1) { 
    [2]=> array(1) { 
     [3]=> array(1) { 
     [4]=> array(0) { 
     } 
     } 
    } 
    } 
} 
+0

非常感謝。你能提供一個關於你在這裏做了什麼的小解釋嗎? – MrFix

+0

@MrFix新增評論。 –

3

我認爲你想創建看起來像下面的多維數組的語法。

$array = array(

    'array1' => array('value' => 'another_value'), 
    'array2' => array('something', 'something else'), 
    'array3' => array('value', 'value') 
); 

這是你在找什麼?

+1

這工作對我來說似乎比上面提到的更簡單。 –

4

你可以簡單地做一個遞歸函數:

<?php 
function nestArray($myArray) 
{ 
    if (empty($myArray)) 
    { 
     return array(); 
    } 

    $firstValue = array_shift($myArray); 
    return array($firstValue => nestArray($myArray)); 
} 
?> 
+0

我認爲這是最清晰的解決方案,只需看一眼即可知道它的功能。你應該在基本情況下返回一個空數組。 – Matsemann

+0

@Matsemann:你說得對,我已經編輯了我的答案。 – Blackhole

+0

關於投票的任何說明? – Blackhole