春节之后上了两门Coursera课程,又跟集智俱乐部研究了一个多月神经网络,一篇博客都没写完。今天先从一篇短文开始,再慢慢完成之前的一些草稿。
昨天鸟哥在PHP Conference讲到PHP7的AST时,说起PHP的一个历史遗留问题:三元运算符的结合性。PHP的语法是类似于C的,但是在这里却不一样。
例如,在C语言中:
#include <stdio.h>
int main(int argc, char **argv)
{
char var;
var = 1?'a':0?'b':'c';
printf("%c", var);
return 0;
}
输出的结果为a
。
而在PHP中
<?php
echo 1?'a':0?'b':'c';
输出的结果为b
。
这是因为,在C语言中,表达式1?'a':0?'b':'c'
被解释为
1 ? 'a' : ( 0 ? 'b' : 'c' )
而在PHP中,被解释为
( 1 ? 'a' : 0 ) ? 'b' : 'c'
也即,在PHP中,三元运算符是左结合的,这很奇怪,而且似乎是各种语言中唯一一个这样的。
这曾经被认为是一个bug,但是过去由于某些原因无法被修复。现在在PHP7中可以修复了。但是大家已经不准备修复它了。(reddit.com, grokbase.com)
Pingback引用通告: PHP 那些“坑” R11; 企业网站欣赏,HTML5模板下载,JQUERY特效,网页素材下载
Pingback引用通告: PHP 那些“坑” R11; 企业网站欣赏,HTML5模板下载,JQUERY特效,网页素材下载
Pingback引用通告: PHP 那些“坑” R11; 企业网站欣赏,HTML5模板下载,JQUERY特效,网页素材下载
Pingback引用通告: PHP 那些“坑” - 奇奇问答
Pingback引用通告: PHP 那些“坑” | 程式前沿
Pingback引用通告: PHP 那些“坑” - 程序員的後花園
Pingback引用通告: PHP 那些“坑” - 算法网
Pingback引用通告: PHP 那些“坑” - 算法网
Pingback引用通告: PHP 那些“坑” _ 脚本宝典
Pingback引用通告: PHP 那些“坑” R11; FIXBBS
Pingback引用通告: PHP 那些“坑” R11; FIXBBS
Pingback引用通告: PHP 那些“坑” R11; FIXBBS
Pingback引用通告: PHP 那些“坑” R11; FIXBBS
Pingback引用通告: PHP 那些“坑” R11; FIXBBS
Pingback引用通告: PHP 那些“坑” R11; FIXBBS