2011-04-26 156 views
9

我有兩個數組。像:如何將數組值變爲變量?

Bear, prince, dog, Portugal, Bear, Clown, prince, ...

,第二個:

45, 67, 34, 89, ...

我想將字符串鍵的第一陣列中到變量並將其設置等於 到數第二陣列中。

可能嗎?

回答

25
extract(array_combine($arrayKeys, $arrayValues)); 

http://php.net/array_combine
http://php.net/manual/en/function.extract.php

我建議你保留值的數組,雖然,這是很少的變量變量淹沒你的命名空間是一個好主意。

+0

比過去你不得不使用eval來解決這類問題要好得多。 – Wes 2011-04-26 06:24:44

+0

@Wes這些*「過去的日子」*的年齡? PHP可以在不使用'evil()'的情況下執行它,因爲它有循環和變量變量...... :) – deceze 2011-04-26 06:26:41

+0

我想我的時間過去的日子是在我知道4.3之前的'extract'之前。只是顯示我知道我猜的。 '邪惡()'...不錯:)使用提取物 – Wes 2011-04-26 06:28:45

5

使用try array_combine: -

<?php 
$a = array('green', 'red', 'yellow'); 
$b = array('avocado', 'apple', 'banana'); 
$c = array_combine($a, $b); 

print_r($c); 
?> 

輸出: -

Array (
    [green] => avocado 
    [red] => apple 
    [yellow] => banana 
    ) 

遍歷數組併爲每個鍵值創建變量: -

foreach($c as $key => $value) { 
    $$key = $value; 
} 

現在,你可以打印變量,如: -

echo $green." , ".$red." , ".$yellow; 

希望這會有所幫助。謝謝。

+1

我認爲使用提取功能是更好的方法。 http://php.net/manual/en/function.extract.php但是,如果以防萬一,你不希望所有的數組值作爲變量(只想限制變量),那麼你可以使用我的答案。 – 2011-04-26 06:31:29

+1

對於限制變量,我會'提取(array_intersect_key($ c,array_flip(array('green','red'))));'。 ;) – deceze 2011-04-26 06:34:50