2011-11-05 59 views
1

使用數組$s_filters看起來像這樣(很多不同的密鑰可能):PHP數組和可變的變量

Array 
(
    [genders] => m 
    [ages] => 11-12,13-15 
) 

我如何編程這個數組轉換成這樣:

$gender = array('m'); 
$ages = array('11-12','13-15'); 

所以基本上循環通過$s_filters並創建新的數組,其名稱是關鍵,值應該在","上爆炸;

我嘗試使用可變變量:

foreach($s_filters as $key => $value) 
{ 
    $$key = array(); 
    $$key[] = $value; 
    print_r($$key); 
} 

但是這給了我cannot use [] for reading錯誤。我在正確的軌道上嗎?

回答

2

下面的代碼採取了不同的方法試圖實現。它首先使用extract功能的陣列局部變量轉換,然後循環儘管這些新的變量和explodeŠ他們:

extract($s_filters); 

foreach(array_keys($s_filters) as $key) 
{ 
    ${$key} = explode(",", ${$key}); 
} 
0
$s_filters = Array 
(
    "genders" => "m", 
    "ages" => "11-12,13-15" 
); 

foreach($s_filters as $key=>$value) 
{ 
    ${$key} = explode(',', $value); 
} 

header("Content-Type: text/plain"); 
print_r($genders); 
print_r($ages); 
0
$gender = $arr['gender']; 

你想有什麼是不可讀的,難以調試,並總的來說是一個糟糕的做法它絕對可以處理得更好。