PHP 逗号运算符 的作用
在C语言中,逗号运算符的定义是:逗号运算符用于将若干表达式(两个或两个以上)连接起来,连接起来的表达式被称为逗号表达式,逗号运算符在所有运算符中优先级最低,并且在逗号运算符左边的子表达式所有副作用都结束(运算结束)后,才进行其右边子表达式的运算,所以,将逗号表达式最右边的子表达式的值作为整个逗号表达式的值。
进入正题,写此随笔的缘由:
①:在翻看PHP手册的过程中,看到了一段示例代码(注意标红加粗的部分):
<?php
echo '<a href="ftp://user:', rawurlencode('foo @+%/'),
'@ftp.example.com/x.txt">';
?>
问题:逗号运算符的作用是?
Anybody Know It?
给我的第一感觉,这个逗号运算符是用作续行的,类似于C语言中的" \ ",当看到第二段示例的时候,发现情况不是这样的:
<?php
echo '<a href="http://example.com/department_list_script/',
rawurlencode('sales and marketing/Miami'), '">';
?>
那么在PHP语言中,逗号运算符的作用是什么呢?
答:在PHP中,逗号用于多参数分隔。(是不是很无聊)
②:结合另外一个例子:
echo '1+5=' . 1+5;
这段代码的输出结果是?"1+5=6" ?别问我,试试看。
为什么没有得到预期的结果呢?
PHP中,字符串运算符 . 与算术运算符 + - 的优先级相同,OK,程序可以直接按照从左至右的流程走,先执行字符串连接,再执行加法运算。
即 1) echo '1+5=1' + 5;
2) echo 1 + 5;// 字符串经强制类型转换后,变成 1 ,没问题吧~
3) echo 6;
那么,下面这个表达式的值应该是多少呢?
echo '1+5=' , 1+5;
Yeah! 完全符合预期!1+5=6
由于在PHP中,逗号用于多参数分隔,这相当于为 echo 传递了两个参数,echo 会先计算每个参数,再使用运算后的结果进行连接、输出。
从缘由②例子一分解步骤中强制转换的结果,以及例子二中逗号运算符的使用可以看出,PHP 与 C 相比,“纯粹性”差了些,但这也许正是 PHP 这门语言为 Web 开发而生的魅力所在。