2013-06-28 114 views
-4

我想陣列字符串轉換像轉換數組字符串數組

[["a","b",["c1","c2"]],"d",["e1","e2"]] 

到PHP中的數組。

有沒有辦法做到這一點?

+0

數組字符串?你想要什麼結果? [「a」,「b」,「c1」,「c2」,「d」,「e1」,「e2」]? –

+0

這很可能是一個重複http://stackoverflow.com/questions/526556/how-to-flatten-a-multi-dimensional-array-to-simple-one-in-php – MadDogMcNamara

+0

我不明白downvotes 。問題是有關解析字符串以在內存中生成嵌套數組的有趣問題。我是新來的,但我猜測人們只是不理解這個問題。 – Racso

回答

4

提供的字符串是有效的JSON - 因此json_decode可用於將它變成一個真正的(PHP)數組。

從文檔兩者幾乎直接(只有字符串被改變):

$json = '[["a","b",["c1","c2"]],"d",["e1","e2"]]'; 
var_dump(json_decode($json)); 

對於這種情況,它比試圖用其他的代碼評估(即eval)和簡單得多寫作破解它顯著清潔和更安全自定義解析代碼。

+1

爲什麼在你的答案中有'eval'? 'eval'永遠不是正確的答案。 – Halcyon

+1

@FritsvanCampen我認爲eval值得被提及,因爲它已被用於類似的任務(這個問題最初並未標記爲json)。我已經更新了措辭,試圖讓它更加明顯。另外,請注意,沒有鏈接到'eval'。 – user2246674

0

How to "flatten" a multi-dimensional array to simple one in PHP?可能的複製和How to Flatten a Multidimensional Array?

最簡單/最好的解決方案,我是

function flatten(array $array) { 
    $return = array(); 
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; }); 
    return $return; 
} 
+1

我認爲[json]標籤意味着它是一個需要解析爲JSON的字符串 - 但很難說。 – Ryan

+0

你可能是對的。如果是這種情況,我會在這裏留下。 (雖然不太可能) –