如何在PHP中将键/值链解析为关联数组?

问题描述:

我有一个字符串,它看起来像:key1/value1/key2/value2/如何在PHP中将键/值链解析为关联数组?

我对

一个explode('/',trim($mystring,'/'))现在我想天堂关联数组,如:

array(
'key1' => 'value1', 
'key2' => 'value2', 
    ... 
); 

当然我可以做它与一个for循环,我总是读两个条目,并将它们推入目标数组,但没有更有效和优雅的东西?一些与一些PHP核心函数类似于list()的东西?或者什么东西?

+0

最有可能不是。但是你可以定义你自己的功能并重用它,然后你有一个班轮;) – 2011-02-15 12:15:24

使用方法array_walk()的一个回调函数:

function buildNewArray($value, $key, &$newArray) { 
    (($key % 2) == 0) ? $newArray[$value] = '' : $newArray[end(array_keys($newArray))] = $value; 
} 

$myString = 'key1/value1/key2/value2/'; 
$myArray = explode('/',trim($myString,'/')); 

$newArray = array(); 
array_walk($myArray, 'buildNewArray', &$newArray); 

var_dump($newArray); 

一个人可以总是让自己成为一个班轮。

这就是所谓的User-defined functions

无需设计丑陋的东西,但是一班轮,不惜一切代价。
做你自己的功能,你会得到更短,更干净,方式更可靠的结果。
一个函数,不仅可以进行基本的字符串操作,还可以执行更智能的操作,如参数验证。

如果格式不是changin(我的意思是总是Key1/value1/key2/value2)它应该很容易。

的爆炸后,你有这样的:

$arr = Array('key1','value1','key2','value2') 

,所以你现在可以做的:

$new_arr = array(); 
$i = 0;  
for($i=0;$i<count($arr);$i+=2) 
{ 
    $new_arr[$arr[i]] = $arr[$i+1]; 
} 

在循环结束时,您将拥有:

$new_arr = array("key1"=>"value1","key2"=>"value2") 

KISS: )

HTH!