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

时间:2011-02-15 12:10:11

标签: php arrays

我有一个类似于key1/value1/key2/value2/的字符串,依此类推

我在

上做了explode('/',trim($mystring,'/'))

现在我想要一个像:

这样的关联数组
array(
 'key1' => 'value1',
 'key2' => 'value2',
  ...
);

当然我可以用for循环来做,我总是读取两个条目并将它们推入目标数组,但是不是有更高效和优雅的东西吗?一个内衬与一些php核心功能类似于·list()·或什么?

3 个答案:

答案 0 :(得分:1)

如果格式不是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!

答案 1 :(得分:1)

使用带回调函数的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);

答案 2 :(得分:0)

人们可以始终让自己成为一个班轮。

这称为 User-defined functions

无论如何都不需要设计任何丑陋但一线的内容 做出自己的功能,你会得到更短,更清洁,更可靠的结果 一个函数,它不仅可以执行基本的字符串操作,还可以执行更智能的操作,例如参数验证。