我有一个类似于key1/value1/key2/value2/
的字符串,依此类推
我在
上做了explode('/',trim($mystring,'/'))
现在我想要一个像:
这样的关联数组array(
'key1' => 'value1',
'key2' => 'value2',
...
);
当然我可以用for循环来做,我总是读取两个条目并将它们推入目标数组,但是不是有更高效和优雅的东西吗?一个内衬与一些php核心功能类似于·list()·或什么?
答案 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)
人们可以始终让自己成为一个班轮。
无论如何都不需要设计任何丑陋但一线的内容 做出自己的功能,你会得到更短,更清洁,更可靠的结果 一个函数,它不仅可以执行基本的字符串操作,还可以执行更智能的操作,例如参数验证。