我的数组将只包含一组特定的字符。但是,这些字符可以按任意顺序出现在数组中。
我想重新排列这个数组,使它们始终按相同的顺序排列。
这是可能的,因为有时数组将包含1个条目,其他时候最多包含4个条目,可能更多。
可能出现在数组中的字符将是() ^ & ! #,但在提交表单之前,我不知道顺序是什么。
理想情况下,我总是希望它们按以下顺序排列:
! # ^ & ()这是可能的吗?
谢谢
发布于 2013-05-31 21:55:11
试试这样的东西
// establish the sort order
$order = array("!","#", "^", "&", "(",")");
// usort with indexes of $orderArray
usort($arr, function($a, $b) use($order) {
$aIdx = array_search($a, $order);
$bIdx = array_search($b, $order);
return $aIdx - $bIdx;
});发布于 2013-05-31 22:14:41
您可以使用一个内置的PHP排序函数,这取决于您的需求。
您最感兴趣的两个可能是
不过,还有很多其他的-请参阅Php手册中的Sorting Arrays
或者,如果生成的排序顺序与所需的排序顺序不匹配,则可以使用usort,它允许您定义自定义排序函数
像这样的东西应该是可行的
$arrayToSort = array('#','&','()','^','!');
$order = array( '!', '#', '^', '&', '()');
function compare($a,$b) {
global $order;
$indexa = array_search($a,$order);
$indexb = array_search($b,$order);
return ($indexa < $indexb) ? -1 : 1;
}
usort($arrayToSort, $compare);https://stackoverflow.com/questions/16858897
复制相似问题