首頁 >後端開發 >php教程 >PHP:如何使用内置函数处理数组的键值

PHP:如何使用内置函数处理数组的键值

WBOY
WBOY原創
2016-06-06 20:45:111002瀏覽

需求

<code>$tempArray = array(
    0=>"1:A",
    1=>"2:B",
    2=>"3:C",
    3=>"4:D",
    4=>"5:E",
);
</code>

转成:

<code>$tempArray = array(
    "A"=>1,
    "B"=>2,
    "C"=>3,
    "D"=>4,
    "E"=>5,                 
);
</code>

本来想使用php的内置函数array_map来处理的,但是没有成功,除了遍历之外,我更想直接使用php的内置函数来实现,请问代码应该怎么写呢?

回复内容:

需求

<code>$tempArray = array(
    0=>"1:A",
    1=>"2:B",
    2=>"3:C",
    3=>"4:D",
    4=>"5:E",
);
</code>

转成:

<code>$tempArray = array(
    "A"=>1,
    "B"=>2,
    "C"=>3,
    "D"=>4,
    "E"=>5,                 
);
</code>

本来想使用php的内置函数array_map来处理的,但是没有成功,除了遍历之外,我更想直接使用php的内置函数来实现,请问代码应该怎么写呢?

一定要用array_map(不支持key),这是一个方法.

<code>$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);
</code>

<code>$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)
*/
</code>

补充:

<code>array_walk($array, function($val,$key,$arr){ 
    $v = explode(":", $val);
    $arr[0][$v[1]] = $v[0];   
},array(&$array1));
</code>

这么处理也是可以的

<code>$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
)
**/
</code>

如果值里头的:唯一的话可以这么做,为了显得狂拽一点缩成一句话了,可能有点难看懂。

array_mapexplode拆冒号
array_combine拼接

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn