已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 讨论/求助

标题: 第六行代码,哪个逗号啥意思?

作者: @Ta

时间: 2018-06-21发布,2018-06-21修改

点击: 6233

<?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|隐藏机器人聊天)』

1.

看错了

红米 Note4X 标配版(黑色)

(/@Ta/2018-06-22 07:56//)

2.
用户被禁言,发言自动屏蔽。
(/@Ta/2018-06-21 16:58//
被禁言
)

3.

@NowTime,涨知识了
残缺的记忆,美好的回忆(https://76wp.cn)

(/@Ta/2018-06-21 18:58//)

4. @NowTime,涨知识了,谢谢大佬。但是跑起来不对啊?
(/@Ta/2018-06-21 23:11//)

5. 第七行多了个  ] ?
(/@Ta/2018-06-21 23:09//)

7. @大尨,连接符号
(/@Ta/2018-06-22 16:10//)

8. 相当于这样
<?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]));




$arr[$j] = [$arr[$j+1], $arr[$j+1] = $arr[$j]][0]; 是一种简化的交换两个数组元素的方法
[$arr[$j+1], $arr[$j+1] = $arr[$j]]这是一个数组, 逗号分隔的是两个元素
(/@Ta/2018-06-22 18:16//)

9. @石头会飞翔,写法有点高深了。。。
(/@Ta/2018-06-22 21:35//)

10.

<!-- 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] ];

比他的好看多了吧

(/@Ta/2018-06-24 13:09//)

11. @老虎会游泳,好吧,大佬什么懂的???手册上有?
(/@Ta/2018-06-24 19:11//)

12.
(/@Ta/2018-06-24 22:22//)

回复需要登录

8月6日 03:03 星期三

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1