手动对没有公共密钥的数组进行排序?

时间:2018-10-31 20:28:35

标签: php arrays sorting

我在这里尝试了许多解决方案,但是它们似乎都需要一个公用键来对数组进行排序。

我的数组的var_dump()如下:

array(10){[0] =>字符串(11)“农业” [2] =>字符串(6)“金属” [12] =>字符串(10)“卫生” [14] =>字符串(19)“健康与美丽” [22] =>字符串(13)“石油和天然气” [27] =>字符串(12)“建筑” [31] =>字符串(13)“制造” [58] = > string(8)“零售商” [61] => string(11)“ Distributor” [77] => string(7)“ Service”}

我希望能够按以下顺序对数组中的字符串进行排序:

  • 服务

  • 分销商

  • 零售商

  • 制造

  • 建筑

  • 石油与天然气

  • 健康与美容

  • 卫生

  • 金属

  • 农业

我知道这不是理想的解决方案,但我确实需要手动对它们进行排序。

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:1)

对我来说,您似乎想按降序对数组进行排序。为此,您应该使用krsort()函数。

http://php.net/manual/en/function.krsort.php

答案 1 :(得分:1)

  

主要区别在于,这是从数据库中生成的,因此从数据库中删除一个也应将其从数组中删除。因此,为什么我不能手动创建它。

因此,我假设,如果将一个添加到数据库中,它也应该以某种方式“可用”? 如果在数据库中将其重命名,排序是否仍然有效?

唯一可靠的解决方案是将另一列添加到数据库表中,我们将其称为position-然后获取条目并按位置值对它们进行排序,位置值可以是1到10。

提示:以步长(thausand)开始(1000,2000,3000,...)。这使您以后可以在介于两者之间的某个位置添加项目,而无需更改所有后续项目。 (即,创建位置为1500的条目将成为新的第二个条目,其他所有内容将自动向下移动一个位置。如果要插入另一个“新的第二个条目”,则可以使用1250,依此类推……给您一些“时间”,直到您最终必须重新索引位置-如果您想一直保持下去,请使用十进制/双精度^^)

答案 2 :(得分:0)

要以相反的顺序对数组进行排序,请使用

array array_reverse ( array $array [, bool $preserve_keys = FALSE ]

参数

数组 输入数组。

preserve_keys 如果设置为TRUE,则保留数字键。非数字键不受此设置的影响,并且将始终保留。

http://php.net/manual/en/function.array-reverse.php

相关问题