我的数组只包含一组特定的字符。但是,这些字符可以以任何顺序出现在数组中。Order Array Results
我想重新排列这个数组,使它们始终处于相同的顺序。
这是可能的,因为有些时候数组可能包含1个条目,其他时间最多4个条目可能更多。
可能出现在数组中的字符将为()^& ! #
但是我不知道在提交表单之前按什么顺序。
理想的情况下,我总是希望他们是按以下顺序:
! #^& ()
这可能吗?
感谢
我的数组只包含一组特定的字符。但是,这些字符可以以任何顺序出现在数组中。Order Array Results
我想重新排列这个数组,使它们始终处于相同的顺序。
这是可能的,因为有些时候数组可能包含1个条目,其他时间最多4个条目可能更多。
可能出现在数组中的字符将为()^& ! #
但是我不知道在提交表单之前按什么顺序。
理想的情况下,我总是希望他们是按以下顺序:
! #^& ()
这可能吗?
感谢
尝试这样的事情
// 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;
});
你可以使用内置的PHP排序功能之一,根据您的要求。
大概两个你最感兴趣的是
虽然,也有相当多的人 - 请参阅Sorting Arrays从PHP手册
,或者,如果得到的排序顺序不匹配你渴望什么,你可以使用,它允许你定义自定义排序函数
像这样的东西应该工作
$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);
这在功能上与我的方法相同。你的方法优于我的,更容易阅读。我的方法的优点可以生活在一个功能,而不会混淆全局名称空间。也不使用全局关键字。 – Orangepill
谢谢,我该如何使用它。它与PHP 4兼容吗? 我运行这个的网络设备只支持php 4! – MacMan
完全同意..我正在编辑我的帖子。我喜欢你的代码。它看起来非常干净。双加使用匿名功能。 另外,yeh asort,usort都在php 4中工作。 –
这是可能的,但是PHP使得比大多数语言困难了很多。 – Antimony
我不知道窗体是什么样子,但也许你可以在那里使用一个数组并分配固定的键。这样他们将始终以相同的顺序**和**始终具有相同的密钥。 – jeroen
我将如何分配固定键? – MacMan