<?php
function bubbleSort($arr) {
for($i=0; $i<count($arr)-1; $i++) {
for($j=0; $j<count($arr)-1-$i; $j++) {
if($arr[$j] > $arr[$j+1]) {
$arr[$j] = [$arr[$j+1], $arr[$j+1] = $arr[$j]][0];
}
}
}
return $arr;
}
var_dump(bubbleSort([9,8,7,6,5,4,3,2,1]));
@NowTime,涨知识了
残缺的记忆,美好的回忆(https://76wp.cn)
<?php
function bubbleSort($arr) {
for($i=0; $i<count($arr)-1; $i++) {
for($j=0; $j<count($arr)-1-$i; $j++) {
if($arr[$j] > $arr[$j+1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
var_dump(bubbleSort([9,8,7,6,5,4,3,2,1]));
<!-- markdown -->
哦,我终于理解了,其实是这样的:
$arr[$j] = array( $arr[$j+1], $arr[$j+1] = $arr[$j] )[0];
php5.4开始可以用 [a, b]
代替 array(a, b)
,并且允许对返回的数组直接取元素,所以array(a, b)[0]
和[a, b][0]
都是允许的。
而这个语句的效果就是,交换$arr[$j]
和$arr[$j+1]
的值
但其实他可以用
list($arr[$j], $arr[$j+1]) = array($arr[$j+1], $arr[$j]);
在PHP7.2这可以写成
[ $arr[$j], $arr[$j+1] ] = [ $arr[$j+1], $arr[$j] ];
比他的好看多了吧
看错了

红米 Note4X 标配版(黑色)