2012-02-02 34 views
2

可能重複:
Array to named variables陣列轉換爲單變量

我如何轉換這樣

$data = array(
    'name' => 'something', 
    'another' => 'variable' 
); 

$name = 'something'; 
$another = 'variable'; 
數組

有沒有辦法,我可以做到這一點沒有循環?

+0

你能不能給我們你正在努力實現在更高層次上的內容?這似乎是一個奇怪的要求。什麼情況?也許我們可以爲你提供更好的整體解決方案。 – ralfe 2012-02-02 13:27:41

+0

@ralfe這不是一個奇怪的請求必然。通過將數組傳遞給抓取模板文件的方法來完成大量模板,然後'提取()'這些值,以便不必通過數組名稱引用它們。 – jprofitt 2012-02-02 13:29:09

+0

關於模糊的安全性猜測:您可以使用EXTR_SKIP,EXTR_PREFIX或array_intersect_key限制提取的變量。 (你知道,應該是用戶輸入。) – mario 2012-02-02 13:38:36

回答

3

你想要做的事情基本上是個壞主意。如果您使用來自用戶的數據提取數組,則很容易破解您的網站。但如果你真的想這樣做,請使用extract函數。

0

extract()可以,但抵制的衝動做如此魯莽和不負責任的。

+0

+1,因爲你是唯一一個警告說這是一個可怕的想法。 – MetalFrog 2012-02-02 13:30:37

+0

我沒有看到問題,指出數據來自用戶。它可能是在類或函數之間傳遞的內部數據。數組的創建和提取可能效率不高,但可能會出現這種情況,這是一種優雅的解決方案(儘管我還沒有想到)。 – SourceMaid 2012-02-02 19:31:58

0

隨着extract,該陣列中的定義每個鍵/值對一個新的變量:

extract($data); 

echo $name; // something 
echo $another; // variable