php – 使用字符串值自定义数组排序
发布时间:2020-12-13 17:47:06 所属栏目:PHP教程 来源:网络整理
导读:假设我有这个数组: $array = array( array("id" = 7867867,"animal" = "Dog"),array("id" = 3452342,"animal" = "Lion"),array("id" = 1231233,array("id" = 5867867,array("id" = 2222211,"animal" = "Zeebra"),array("id" = 2222222,"animal" = "Cat"),ar
假设我有这个数组:
$array = array( array("id" => 7867867,"animal" => "Dog"),array("id" => 3452342,"animal" => "Lion"),array("id" => 1231233,array("id" => 5867867,array("id" => 2222211,"animal" => "Zeebra"),array("id" => 2222222,"animal" => "Cat"),array("id" => 3333333,array("id" => 4444444,"animal" => "Zeebra") ); 现在我一直在尝试做的是使用php排序函数,以便能够根据特定规则对其进行排序(不是按字母顺序) 客户希望这些信息按“Lion first,Dog second,Zeebra third,Cat 4th”排序. 像这样的东西: $array = array( array("id" => 3452342,array("id" => 7867867,); 该阵列将使用“动物”值进行排序,并且将基于预先确定的规则. 我试图找出php排序函数,但我只能按照字母顺序或数字顺序对数组进行排序. 我已经开始工作的是一个if语句和循环块,我想尽快摆脱那个慢速代码. 解决方法
使用Jonathan建议使用usort,您可以在单独的函数中定义自定义规则以进行排序,例如:
function getAnimalValue($animal) { switch($animal) { case 'Lion': return 1; case 'Dog': return 2; case 'Zeebra': return 3; case 'Cat': return 4; } return 0; } 然后,实现自己的比较功能: function compare($itemA,$itemB) { $a = getAnimalValue($itemA['animal']); $b = getAnimalValue($itemB['animal']); if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } 最后,使用compare函数调用usort: usort($array,"compare"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |