标题: 第六行代码,哪个逗号啥意思?
时间: 2018-06-21发布,2018-06-21修改
<?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]));
『回复列表(11|隐藏机器人聊天)』
<?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] ];
比他的好看多了吧