gpt4 book ai didi

php - 如何根据元素中的整数值对元素进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:19 25 4
gpt4 key购买 nike

我需要根据它包含的整数值对数组元素进行排序。

当前输出是:

array[0] -> Indica 4 PAX

array[1] -> Indigo/swif Dezire/Etios 11 PAX

array[2] -> Tavera 8-10 PAX

array[3] -> Innova 10 PAX

array[4] -> Tempo Traveller 7-9 PAX

但实际上我需要:

array[0] -> Indica 4 PAX

array[1] -> Tempo Traveller 7-9 PAX

array[2] -> Tavera 8-10 PAX

array[3] -> Innova 10 PAX

array[4] -> Indigo/swif Dezire/Etios 11 PAX

最佳答案

你的问题上有 mysql 标签,所以我假设你的数据来自结果集行。我还看到您的所有数字值都是字符串中倒数第二个非空白子字符串。

因此,您的排序过程可以在 mysql 查询中使用此 ORDER BY 子句有效地处理:( SQLFiddle )

ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(`yourfieldname`,' ',-2),' ',1) AS UNSIGNED),`yourfieldname`

上面的子句说:隔离倒数第二个子字符串并将其转换为无符号数。这确保执行“自然排序”(因此 12 不会出现在 3 之前)。作为次要排序标准,我使用全字符串来打破平局。

也就是说,如果您的实际字符串并不总是遵循该结构,我接下来会推荐 array_multisort(),因为它执行较少的迭代正则表达式函数调用。

代码:(Demo)

$order=preg_replace('~\D+~','',$array);  // generates: ['4','11','10','10','9']
array_multisort($order,$array); // sort $array as $order is sorted
var_export($array);

你甚至可以把它写成一行:( Demo )

array_multisort(preg_replace('~\D+~','',$array),$array);
var_export($array);

*用于处理带连字符的数字子字符串的模式调整:~-\d+|\D+~这将删除连字符后的非数字字符和数字。

所有上述方法都将采用此输入:

$array=[
'Indica 4 PAX',
'Indigo/swif Dezire/Etios 11 PAX',
'Tavera 10 PAX',
'Innova 10 PAX',
'Tempo Traveller 9 PAX'
];

并提供这个输出:

array (
0 => 'Indica 4 PAX',
1 => 'Tempo Traveller 9 PAX',
2 => 'Innova 10 PAX',
3 => 'Tavera 10 PAX',
4 => 'Indigo/swif Dezire/Etios 11 PAX',
)

关于php - 如何根据元素中的整数值对元素进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48825809/

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