如何在PHP中对数组排序以强制选中的行作为第一行?
我的数组是
array[]=array(id=>'a', content=>'lemon');
array[]=array(id=>'b', content=>'apple');
array[]=array(id=>'c', content=>'banana');
array[]=array(id=>'d', content=>'cherry');
如何对数组进行排序以强制
array[]=array(id=>'b', content=>'apple');
作为第一行,其余行无关紧要(apple是键)。
在另一个例子中,将sort转换为get
array[]=array(id=>'d', content=>'cherry');
作为第一行,其余行无关紧要(cherry是关键)。
3条答案
按热度按时间rqqzpn5f1#
另一种方法是使用
array_slice
有效地旋转数组,将所需的元素放在开头:输出:
Demo on 3v4l.org
e4yzc0pl2#
有两种方法我可以想到这样做。第一种是作为Ultimater在评论中建议提取匹配的行,然后排序,然后添加行回到...
第二种方法是使用
usort
并添加特定的子句,因为如果键与您想要的第一行匹配,那么它将始终强制它位于第一行......(我在这里使用了
<=>
,它是PHP 7+,如果你需要使用PHP 5,还有其他选择)。如果像您的评论所建议的那样,不需要对其余数据进行排序,那么第一组代码减去
sort()
就可以了。gjmwrych3#
另一个选择是--如果id:content是一对一的,我们可以通过内容索引数组,并与一个具有单个空“apple”键(或您要查找的任何内容值)的数组合并。
如果生成的字符串键不合需要,可以使用
array_values
重新索引数组。如果数组只包含id和content,并且id:content实际上是一对一的,那么键-值对的“字典”将比这样的行列表更容易处理,并且如果可能的话,最好以这种方式开始设置数组。
如果id:content不是一对一的,那么......没关系。- )