php 更改数组键名,同时不改变原数组的排列顺序

先感叹一下,数组函数真的是个好东西,它已经不止一次两次帮助我解决问题了,先上此功能中需要掌握的几个数组函数。

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

可选。规定函数是保留键名还是重置键名。可能的值:

  • true - 保留键名
  • false - 默认。重置键名
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 新增加的。

链接地址:https://www.jb51.net/article/111257.htm

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值