2011-11-05 162 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']; 

你想有什么是不可读的,难以调试,并总的来说是一个糟糕的做法它绝对可以处理得更好。