需求
将
$tempArray = array( 0=>"1:A", 1=>"2:B", 2=>"3:C", 3=>"4:D", 4=>"5:E", );
转成:
$tempArray = array( "A"=>1, "B"=>2, "C"=>3, "D"=>4, "E"=>5, );
本来想使用php的内置函数array_map来处理的,但是没有成功,除了遍历之外,我更想直接使用php的内置函数来实现,请问代码应该怎么写呢?
array_map
欢迎选择我的课程,让我们一起见证您的进步~~
一定要用array_map(不支持key),这是一个方法.
$tempArray = array( 0=>"1:A", 1=>"2:B", 2=>"3:C", 3=>"4:D", 4=>"5:E", ); $result = array(); array_map(function($value) use (&$result) { list($k,$v) = explode(":", $value); $result[$k] = $v; },$tempArray);
$array = array( 0=>"1:A", 1=>"2:B", 2=>"3:C", 3=>"4:D", 4=>"5:E", ); //处理 $array1 = array(); array_walk($array, function($val,$key,$fix) use(&$array1){ $v = explode($fix, $val); $array1[$v[1]] = $v[0]; },':'); var_dump($array1); /* 输出 array (size=5) 'A' => string '1' (length=1) 'B' => string '2' (length=1) 'C' => string '3' (length=1) 'D' => string '4' (length=1) 'E' => string '5' (length=1) */
补充:
array_walk($array, function($val,$key,$arr){ $v = explode(":", $val); $arr[0][$v[1]] = $v[0]; },array(&$array1));
这么处理也是可以的
$arr = ["1:A", "2:B", "3:C", "4:D", "5:E"]; $arr = json_decode("{".implode(',', array_map(function($item){ return preg_replace('/(.+?):(.+?)/', '"$2":"$1"', $item); }, $arr))."}", true); print_r($arr); /** output Array ( [A] => 1 [B] => 2 [C] => 3 [D] => 4 [E] => 5 ) **/
如果值里头的:唯一的话可以这么做,为了显得狂拽一点缩成一句话了,可能有点难看懂。
:
用array_map和explode拆冒号 用array_combine拼接
explode
array_combine
一定要用
array_map
(不支持key),这是一个方法.补充:
这么处理也是可以的
如果值里头的
:
唯一的话可以这么做,为了显得狂拽一点缩成一句话了,可能有点难看懂。用
array_map
和explode
拆冒号用
array_combine
拼接