先感叹一下,数组函数真的是个好东西,它已经不止一次两次帮助我解决问题了,先上此功能中需要掌握的几个数组函数。
array_keys(array,value,strict);
array_keys() 函数返回包含数组中所有键名的一个新数组。
如果提供了第二个参数,则只返回键值为该值的键名。
如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。
array_slice(array,start,length,preserve)
array_slice() 函数在数组中根据条件取出一段值,并返回。
注释:如果数组有字符串键,所返回的数组将保留键名
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
start | 必需。数值。规定取出元素的开始位置。 0 = 第一个元素。 如果该值设置为正数,则从前往后开始取。 如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。 |
length | 可选。数值。规定被返回数组的长度。 如果该值设置为整数,则返回该数量的元素。 如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。 如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。 |
preserve | 可选。规定函数是保留键名还是重置键名。可能的值:
|
array_combine(keys,values);
array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。
注释:键名数组和键值数组的元素个数必须相同!
如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。
下来照旧上代码示例:
$gameTypeTag 数据内容大致如下:
array(8) {
["游戏"]=>
array(40) {
[0]=>
string(9) "庇护所"
[1]=>
string(12) "星际狂飙"
[2]=>
string(13) "永不言弃1"
}
["管理"]=>
array(3) {
[0]=>
string(12) "周五团建"
[1]=>
string(6) "请假"
[2]=>
string(6) "扣罚"
}
["功能"]=>
array(9) {
[0]=>
string(12) "产品后台"
[1]=>
string(15) "技术恳谈会"
[2]=>
string(12) "发行计划"
[3]=>
string(12) "项目分配"
[4]=>
string(6) "互推"
[5]=>
string(8) "sourcing"
[6]=>
string(9) "策划案"
[7]=>
string(9) "新营销"
[8]=>
string(18) "安卓评分系统"
}
["部门"]=>
array(11) {
[0]=>
string(2) "QA"
[1]=>
string(6) "版号"
[2]=>
string(6) "运营"
}
["个人"]=>
array(0) {
}
["其他"]=>
array(3) {
[0]=>
string(11) "Gamer-Gamer"
[1]=>
string(6) "官网"
[2]=>
string(5) "Steam"
}
["会展"]=>
array(0) {
}
["测试"]=>
array(0) {
}
}
将上述数组中的会展改为AUTO:
$old_key = '会展';
$new_key = 'AUTO';
$key_array = array_keys($gameTypeTag);
foreach ($key_array as $key => $value) {
if($value == $old_key){
$key_array[$key] = $new_key;
}
}
$gameTypeTag = array_combine($key_array,array_slice($gameTypeTag, 0));
讲真,代码不复杂,想清楚怎么做就好。
同时,附上另外一种改键名需求下的代码链接:
这个需求下,还需要掌握:
array_walk(array,myfunction,userdata...)
array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。
典型情况下 myfunction 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。
如果 myfunction 函数需要的参数比给出的多,则每次 array_walk() 调用 myfunction 时都会产生一个 E_WARNING 级的错误。这些警告可以通过在 array_walk() 调用前加上 PHP 的错误操作符 @ 来抑制,或者用 error_reporting()。
注释:如果回调函数需要直接作用于数组中的值,可以将回调函数的第一个参数指定为引用:&$value。(参见例子 3)
注释:将键名和 userdata 传递到 myfunction 中是 PHP 4.0 新增加的。