亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php usort排序在php7.2和5.6版本中結果不一樣各位有什么建議?

php usort排序在php7.2和5.6版本中結果不一樣各位有什么建議?

大話西游666 2019-08-21 11:58:34
問題描述對數組進行排序,先對a字段正序排序,但0排到最后,再對b字段逆序排序實現代碼//對數組進行排序,先對a字段正序排序,但0排到最后,再對b字段逆序排序$a1=array(array('a'=>1,'b'=>1),array('a'=>2,'b'=>1),array('a'=>1,'b'=>2),array('a'=>0,'b'=>1),array('a'=>1,'b'=>3),array('a'=>2,'b'=>2),array('a'=>0,'b'=>2),array('a'=>2,'b'=>3));//對a排序functionmy_sort1($a,$b){if($a['a']==0){return1;}if($b['a']==0){return-1;}if($a['a']>$b['a']){return1;}return-1;}//對b排序functionmy_sort2($a,$b){if($a['a']==$b['a']){if($a['b']$b['b']){return-1;}}return0;}usort($a1,"my_sort1");usort2($a1,"my_sort2");返回結果php7.2返回結果正常Array([0]=>Array([a]=>1[b]=>3)[1]=>Array([a]=>1[b]=>2)[2]=>Array([a]=>1[b]=>1)[3]=>Array([a]=>2[b]=>3)[4]=>Array([a]=>2[b]=>2)[5]=>Array([a]=>2[b]=>1)[6]=>Array([a]=>0[b]=>2)[7]=>Array([a]=>0[b]=>1))php5.6返回結果有問題Array([0]=>Array([a]=>0[b]=>2)[1]=>Array([a]=>0[b]=>1)[2]=>Array([a]=>2[b]=>3)[3]=>Array([a]=>2[b]=>2)[4]=>Array([a]=>2[b]=>1)[5]=>Array([a]=>1[b]=>3)[6]=>Array([a]=>1[b]=>2)[7]=>Array([a]=>1[b]=>1))思考**查閱了相關信息,函數php7并沒有修改usort方法疑問:是否php7版本對php數組進行了修改如果有大神知道的,還望不吝賜教!**
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

if($b['a']==0){
return-1;
}
你這個if是多余的吧,兩個if比較結果會產生沖突,所以在排序中可能產生不穩定的結果。
我把你代碼改了下
//對數組進行排序,先對a字段正序排序,但0排到最后,再對b字段逆序排序
$a1=array(
array('a'=>1,'b'=>1),
array('a'=>2,'b'=>1),
array('a'=>1,'b'=>2),
array('a'=>0,'b'=>1),
array('a'=>1,'b'=>3),
array('a'=>2,'b'=>2),
array('a'=>0,'b'=>2),
array('a'=>2,'b'=>3)
);
//對a排序
$count=0;
functionmy_sort1($a,$b){
global$count;
$count++;
if($a['a']==0){
return1;
}
/*if($b['a']==0){
return-1;
}*/
if($a['a']>$b['a']){
return1;
}
return-1;
}
//對b排序
functionmy_sort2($a,$b){
if($a['a']==$b['a']){
if($a['b']<$b['b']){
return1;
}elseif($a['b']>$b['b']){
return-1;
}
}
return0;
}
usort($a1,"my_sort1");
usort($a1,"my_sort2");
echo'Comparetimes:'.$count,"\n";
var_export($a1);
php7.2沒注釋第二個if的情況下,比較了15次,注釋了的情況下比較了14次php5.6沒注釋19次,注釋了16次
                            
查看完整回答
反對 回復 2019-08-21
  • 2 回答
  • 0 關注
  • 552 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號