如何在PHP中将键/值链解析为关联数组?
问题描述:
我有一个字符串,它看起来像:key1/value1/key2/value2/
等如何在PHP中将键/值链解析为关联数组?
我对
一个explode('/',trim($mystring,'/'))
现在我想天堂关联数组,如:
array(
'key1' => 'value1',
'key2' => 'value2',
...
);
当然我可以做它与一个for循环,我总是读两个条目,并将它们推入目标数组,但没有更有效和优雅的东西?一些与一些PHP核心函数类似于list()的东西?或者什么东西?
答
使用方法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!
最有可能不是。但是你可以定义你自己的功能并重用它,然后你有一个班轮;) – 2011-02-15 12:15:24