排序数组 [英] Sorting arrays
问题描述
我在理解某些数组
排序函数时遇到了什么问题。在所有情况下,我的比较功能是:
函数比较($ x,$ y)
{
if($ x [1] == $ y [1])
返回0;
否则if($ x [1]< $ y [1])
返回-1;
其他
返回1;
}
我从这开始:
$ contents = array(array(''TIR'',''Tires'',100),
array(''OIL'',''Oil'',10 ),
数组(''SPK'',''Spark Plugs'',4));
echo''< br> XXX< br>'' ;
foreach($ content $ r){
var_export($ r);
echo''< br>'';
}
echo''< br> YYY< br>'';
uasort($ contents,''compare'') ;
foreach($ content $ r){
var_export($ r);
echo''< br>'';
}
输出,无论我使用usort还是uasort,总是:
XXX
array(0 =>''T IR'',1 =>''轮胎'',2 => 100,)
数组(0 =>'''油'',1 =>''油''' ,2 => 10,)
数组(0 =>''SPK'',1 =>''火花塞'',2 => 4,)
YYY
数组(0 =>'''OIL'',1 =>''油'',2 => 10,)
数组(0 =>''SPK'',1 =>''火花塞'',2 => 4,)
数组(0 =>'''TIR'',1 =>''轮胎'',2 => 100,)
但是如果我使用uksort我得到:
XXX
数组(0 =>''TIR'',1 =>'''轮胎'',2 => 100,)
数组(0 =>'''OIL'',1 = >''油'',2 => 10,)
数组(0 =>''SPK'',1 =>''火花塞'',2 => 4,)
YYY
数组(0 =>''SPK'',1 =>''火花塞'',2 => ; 4,)
数组(0 =>'''油'',1 =>''油'',2 => 10,)
数组(0 =>''TIR'',1 =>'''轮胎'',2 => 100,)
但我不能看看我为什么得到这个订单的逆转???
然后我尝试了:
$ contents = array(array(c =>'''TIR' ',d =>''轮胎'',p => 100),
数组(c =>'''油'',d =>''油'',p => 10),
数组(c =>''SPK'',d =>''火花塞'',p => 4));
echo''< br> XXX< br>'';
foreach($ content as $ r){
var_export($ r) );
echo''< br>'';
}
echo''< br> YYY< br>'' ;
uksort($ contents,''compare'');
foreach($ content as $ r){
var_export($ r) );
echo''< br>'';
}
此次输出,无论我使用usort,uasort或uksort总是:
XXX
array(''c''=> ''TIR'',''d''=> ''轮胎'',''p''=> 100,)
数组(''c''=>'''油''''''''=>''油'''''''''=> 10 ,)
数组(''c''=>''SPK'',''d''=>''火花塞'',''''=> 4 ,)
YYY
array(''c''=>''SPK'',''d''=>''Spark插头'',''p''=> 4,)
数组(''c''=>''油''',''''=>''油'',''p''=> 10,)
数组(''c''=>'''TIR'',''d''=>''轮胎' ',''p''=> 100,)
最后我试过:
$ contents = array(array(c =>'') TIR'',d =>''轮胎'',p => 100),
数组(c =>'''OIL'',a =>''油''' ,p => 10),
数组(c =>''SPK'',z =>''火花塞'',p => 4)); >
echo''< br> XXX< br>'';
foreach($ content $ r){
var_export($ r);
echo''< br>'';
}
echo''< br> YYY< br>'';
uksort($ contents,''compare'');
foreach($ content $ r){
var_export($ r);
echo''< br>'';
}
再一次,usort,uasort或uksort的输出总是:
XXX
array(''c' '=> ''TIR'',''d''=> ''轮胎'',''p''=> 100,)
数组(''c''=>'''油''''''''=>''油'''''''''=> 10 ,)
数组(''c''=>''SPK'',''d''=>''火花塞'',''''=> 4 ,)
YYY
array(''c''=>''SPK'',''d''=>''Spark插头'',''p''=> 4,)
数组(''c''=>''油''',''''=>''油'',''p''=> 10,)
数组(''c''=>'''TIR'',''d''=>''轮胎' ',''p''=> 100,)
有人可以解释为什么没有一个案例会通过
排序关联数组第二个 ;柱"以及如何找到能够播放3种类型功能之间的差异的示例???
TIA
Paul
I''m having some trouble understanding what is happening with some array
sorting functions. In all cases, my compare function is:
function compare($x, $y)
{
if ( $x[1] == $y[1] )
return 0;
else if ( $x[1] < $y[1] )
return -1;
else
return 1;
}
I started with this:
$contents = array( array( ''TIR'', ''Tires'', 100 ),
array( ''OIL'', ''Oil'', 10 ),
array( ''SPK'', ''Spark Plugs'', 4 ) );
echo ''<br>XXX<br>'';
foreach($contents as $r) {
var_export($r);
echo ''<br>'';
}
echo ''<br>YYY<br>'';
uasort($contents, ''compare'');
foreach($contents as $r) {
var_export($r);
echo ''<br>'';
}
And the output, whether I use usort or uasort is always:
XXX
array ( 0 => ''TIR'', 1 => ''Tires'', 2 => 100, )
array ( 0 => ''OIL'', 1 => ''Oil'', 2 => 10, )
array ( 0 => ''SPK'', 1 => ''Spark Plugs'', 2 => 4, )
YYY
array ( 0 => ''OIL'', 1 => ''Oil'', 2 => 10, )
array ( 0 => ''SPK'', 1 => ''Spark Plugs'', 2 => 4, )
array ( 0 => ''TIR'', 1 => ''Tires'', 2 => 100, )
But if I use uksort I get:
XXX
array ( 0 => ''TIR'', 1 => ''Tires'', 2 => 100, )
array ( 0 => ''OIL'', 1 => ''Oil'', 2 => 10, )
array ( 0 => ''SPK'', 1 => ''Spark Plugs'', 2 => 4, )
YYY
array ( 0 => ''SPK'', 1 => ''Spark Plugs'', 2 => 4, )
array ( 0 => ''OIL'', 1 => ''Oil'', 2 => 10, )
array ( 0 => ''TIR'', 1 => ''Tires'', 2 => 100, )
But I cannot see why I get this reversal of order???
I then tried:
$contents = array( array( c=>''TIR'', d=>''Tires'', p=>100 ),
array( c=>''OIL'', d=>''Oil'', p=>10 ),
array( c=>''SPK'', d=>''Spark Plugs'', p=>4 ) );
echo ''<br>XXX<br>'';
foreach($contents as $r) {
var_export($r);
echo ''<br>'';
}
echo ''<br>YYY<br>'';
uksort($contents, ''compare'');
foreach($contents as $r) {
var_export($r);
echo ''<br>'';
}
And this time the output, whether I use usort, uasort or uksort is always:
XXX
array ( ''c'' => ''TIR'', ''d'' => ''Tires'', ''p'' => 100, )
array ( ''c'' => ''OIL'', ''d'' => ''Oil'', ''p'' => 10, )
array ( ''c'' => ''SPK'', ''d'' => ''Spark Plugs'', ''p'' => 4, )
YYY
array ( ''c'' => ''SPK'', ''d'' => ''Spark Plugs'', ''p'' => 4, )
array ( ''c'' => ''OIL'', ''d'' => ''Oil'', ''p'' => 10, )
array ( ''c'' => ''TIR'', ''d'' => ''Tires'', ''p'' => 100, )
Finally I tried:
$contents = array( array( c=>''TIR'', d=>''Tires'', p=>100 ),
array( c=>''OIL'', a=>''Oil'', p=>10 ),
array( c=>''SPK'', z=>''Spark Plugs'', p=>4 ) );
echo ''<br>XXX<br>'';
foreach($contents as $r) {
var_export($r);
echo ''<br>'';
}
echo ''<br>YYY<br>'';
uksort($contents, ''compare'');
foreach($contents as $r) {
var_export($r);
echo ''<br>'';
}
And once again, the outputs with usort, uasort or uksort is always:
XXX
array ( ''c'' => ''TIR'', ''d'' => ''Tires'', ''p'' => 100, )
array ( ''c'' => ''OIL'', ''d'' => ''Oil'', ''p'' => 10, )
array ( ''c'' => ''SPK'', ''d'' => ''Spark Plugs'', ''p'' => 4, )
YYY
array ( ''c'' => ''SPK'', ''d'' => ''Spark Plugs'', ''p'' => 4, )
array ( ''c'' => ''OIL'', ''d'' => ''Oil'', ''p'' => 10, )
array ( ''c'' => ''TIR'', ''d'' => ''Tires'', ''p'' => 100, )
Can someone explain why none of the cases will sort the associative array by
the second "column" and how I can find examples that will sow the
differences between the 3 sort functions???
TIA
Paul
推荐答案
x,
y)
{
if(
y)
{
if (
x [1] ==
这篇关于排序数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!