排序数组 [英] Sorting arrays

查看:109
本文介绍了排序数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在理解某些数组

排序函数时遇到了什么问题。在所有情况下,我的比较功能是:

函数比较($ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆