php-如何对数组执行自定义排序并保留键
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-如何对数组执行自定义排序并保留键,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1442字,纯文字阅读大概需要3分钟。
内容图文
所以我目前有这个:
array(0=>'foo', 1=>'bar', 3=>'baz', 4=>'boo', 5=>'wahoo');
我想要的是:
array(0=>'foo', 3=>'baz', 1=>'bar', 5=>'wahoo', 4=>'boo');
这是一个简化的示例,我的实际数组更大,更复杂,因此不容易将其拆分成较小的块并重新组装.
我一直在使用uksort尝试这样做,我认为这是最好的方法,但似乎无法获得我想要的结果.
编辑:
我认为我的简化示例实际上使这个问题感到困惑.这是我的实际数组以及我最终想要得到的结果.
Array
(
[1820] => Safety
[1821] => Security
[1822] => Digital Life
[1893] => Privacy and Digital Footprints
[1823] => Connected Culture
[1824] => Respecting Creative Work
[1825] => Searching
[1826] => Research and Evaluation
[1836] => Self-Expression and Identity
)
Array
(
[1820] => Safety
[1821] => Security
[1822] => Digital Life
[1893] => Privacy and Digital Footprints
[1823] => Connected Culture
[1836] => Self-Expression and Identity
[1824] => Respecting Creative Work
[1825] => Searching
[1826] => Research and Evaluation
)
所以我几乎有一个数字排序,其中两个项目不按顺序进行.
解决方法:
基于讨论的新答案.
一定要使用uksort()
在比较功能中为匹配项进行切换并进行更改.
适用于以上示例的示例.
function updateKey($key)
{
switch($key)
{
case 1893:
return 1822.5;
case 1836:
return 1823.5;
default:
return $key;
}
}
function cmp($a, $b)
{
$a = updateKey($a);
$b = updateKey($b);
// you must do the compare this way for floats (instead of just subtracting) because php implemented the compare callback poorly
if ($a == $b)
{
return 0;
}
return ($a < $b) ? -1 : 1;
}
uksort($array, 'cmp');
内容总结
以上是互联网集市为您收集整理的php-如何对数组执行自定义排序并保留键全部内容,希望文章能够帮你解决php-如何对数组执行自定义排序并保留键所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。