php数组排序后保留键名,PHP 数组排序后,仍保留对应的字符串键名

原创。

要求:对一个具有字符串键名数组 $arr 实施排序后,仍保留对应的字符串键名。

解决办法:

1. 创建一个 $arr 的备份数组 $a.

2. 对原始数组 $arr 实施排序。

3. 创建一个数组 $b, 其键值为原始数组的键名,且其元素 (键值) 顺序,与排好序的数组一致。

4. 调用 array_combine($b, $arr) 方法,通过合并两个数组 来创建一个新数组,其中第一个数组元素为键名,第二个数组元素为键值。以此, 找回丢失了的字符串键名.

1.[代码][PHP]代码

//一个字符串键名(下标)的数组

$fruits=array("柠檬"=>"lemon","橘子"=>"orange","香蕉"=>"banana",

"苹果"=>"apple","蓝莓"=>"blueberry","草莓"=>"strawberry",

"芒果"=>"mango","榴莲"=>"durian","西瓜"=>"watermelon",

"鸭梨"=>"pear","葡萄"=>"grape");

foreach ($fruits as $key => $val) //输出原始数组 $fruits

echo "fruits[".$key."] = ".$val."
";

echo "


";

// 调用 sort_with_keyName()方法, 获得 排好序的数组

$fruits_sorted = sort_with_keyName( $fruits);

//输出最终结果。

foreach($fruits_sorted as $key=>$val)

echo "fruites sorted[".$key."] = ".$val."
";

/* 定义一个对数组 $arr 实施排序,

* 同时保留对应的字符串键名 (下标) 的排序方法

*/

function sort_with_keyName( $arr) {

//在内存的另一处 $a 复制内容与 $arr 一样的数组

foreach($arr as $key => $value)

$a[$key]=$value;

sort($arr); //对数组 $arr 进行排序

/*创建一个以原始数组的键名为元素值 (键值) 的

*数组 $b, 其元素 (键值) 顺序,与排好序的数组 $arr 一致。

*/

$index=0;

foreach ($arr as $keys => $values) //按排序后数组的顺序

foreach($a as $key => $value) //在备份数组中寻找键值

if ($values==$value)//如果找到键值

$b[$index++]=$key; // 则将数组 $b 的元素值,设置成备份数组 $a 的键名

//返回用数组 $b 的键值作为键名,数组 $arr 的键值作为键值,所组成的数组

return array_combine($b, $arr);

};

?>

2.[图片] Array_With_String_Keys.png

27114121_Jywg.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值