7867867, "animal" => "Dog"), array("id" => 3452342, -6ren">
gpt4 book ai didi

php - 按具有自定义排序优先级的列对数组数组进行排序(不是按字母顺序排列)

转载 作者:可可西里 更新时间:2023-10-31 22:11:37 25 4
gpt4 key购买 nike

假设我有这个数组:

$array = array(
array("id" => 7867867, "animal" => "Dog"),
array("id" => 3452342, "animal" => "Lion"),
array("id" => 1231233, "animal" => "Lion"),
array("id" => 5867867, "animal" => "Dog"),
array("id" => 1111111, "animal" => "Zeebra"),
array("id" => 2222222, "animal" => "Cat"),
array("id" => 3333333, "animal" => "Cat"),
array("id" => 4444444, "animal" => "Zeebra")
);

现在我一直在尝试做的是使用 php 排序函数,以便能够根据特定规则(而不是按字母顺序)对其进行排序

客户希望此信息按“Lion 第一,Dog 第二,Zeebra 第三,Cat 第四”排序。

像这样:

$array = array(
array("id" => 3452342, "animal" => "Lion"),
array("id" => 1231233, "animal" => "Lion"),
array("id" => 7867867, "animal" => "Dog"),
array("id" => 5867867, "animal" => "Dog"),
array("id" => 4444444, "animal" => "Zeebra"),
array("id" => 1111111, "animal" => "Zeebra"),
array("id" => 2222222, "animal" => "Cat"),
array("id" => 3333333, "animal" => "Cat"),
);

数组将使用“动物”值进行排序,并将基于预先确定的规则。

我试图找出 php 排序函数,但我只能让这些函数按字母顺序或数字顺序对数组进行排序。

我开始工作的是一个 if 语句 block 和循环,我想尽快摆脱那些缓慢的代码。

最佳答案

使用 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;
}

最后,使用比较函数调用 usort:

usort($array, "compare");

关于php - 按具有自定义排序优先级的列对数组数组进行排序(不是按字母顺序排列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23352157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com