我如何轉換這樣
$data = array(
'name' => 'something',
'another' => 'variable'
);
到
$name = 'something';
$another = 'variable';
數組
有沒有辦法,我可以做到這一點沒有循環?
我如何轉換這樣
$data = array(
'name' => 'something',
'another' => 'variable'
);
到
$name = 'something';
$another = 'variable';
數組
有沒有辦法,我可以做到這一點沒有循環?
你想要做的事情基本上是個壞主意。如果您使用來自用戶的數據提取數組,則很容易破解您的網站。但如果你真的想這樣做,請使用extract
函數。
extract($data);
extract()
可以,但抵制的衝動做如此魯莽和不負責任的。
+1,因爲你是唯一一個警告說這是一個可怕的想法。 – MetalFrog 2012-02-02 13:30:37
我沒有看到問題,指出數據來自用戶。它可能是在類或函數之間傳遞的內部數據。數組的創建和提取可能效率不高,但可能會出現這種情況,這是一種優雅的解決方案(儘管我還沒有想到)。 – SourceMaid 2012-02-02 19:31:58
隨着extract
,該陣列中的定義每個鍵/值對一個新的變量:
extract($data);
echo $name; // something
echo $another; // variable
你能不能給我們你正在努力實現在更高層次上的內容?這似乎是一個奇怪的要求。什麼情況?也許我們可以爲你提供更好的整體解決方案。 – ralfe 2012-02-02 13:27:41
@ralfe這不是一個奇怪的請求必然。通過將數組傳遞給抓取模板文件的方法來完成大量模板,然後'提取()'這些值,以便不必通過數組名稱引用它們。 – jprofitt 2012-02-02 13:29:09
關於模糊的安全性猜測:您可以使用EXTR_SKIP,EXTR_PREFIX或array_intersect_key限制提取的變量。 (你知道,應該是用戶輸入。) – mario 2012-02-02 13:38:36