在不使用循环的情况下将字符串分解为关联数组?
我有一个类似 的字符串,我需要把它变成一个这样的关联数组:1-350,9-390.99,...
Array
(
[1] => 350
[9] => 390.99
...........
)
是否可以仅使用数组函数而不使用循环来执行此操作?
我有一个类似 的字符串,我需要把它变成一个这样的关联数组:1-350,9-390.99,...
Array
(
[1] => 350
[9] => 390.99
...........
)
是否可以仅使用数组函数而不使用循环来执行此操作?
PHP 5.5+ 双行解决方案,使用array_chunk
和array_column
:
$input = '1-350,9-390.99';
$chunks = array_chunk(preg_split('/(-|,)/', $input), 2);
$result = array_combine(array_column($chunks, 0), array_column($chunks, 1));
print_r($result);
收益 率:
Array
(
[1] => 350
[9] => 390.99
)
以下是不使用 for 循环(使用array_walk)的方法:
$array = explode(',', $string);
$new_array = array();
array_walk($array,'walk', $new_array);
function walk($val, $key, &$new_array){
$nums = explode('-',$val);
$new_array[$nums[0]] = $nums[1];
}
Ideone.com 上的示例。