您现在的位置是:主页 > news > 网站开发培训班/seo博客写作
网站开发培训班/seo博客写作
admin2025/5/7 23:25:17【news】
简介网站开发培训班,seo博客写作,大数据和网站建设,网件路由器恢复出厂设置"AND" {return T_LOGICAL_AND;}一个叫布尔"与",一个叫逻辑"与"之所以使用不同的token。那必然有不同之处。这里我也不卖关子了,google能找到很多答案,其实这两个最实质的区别就是优先级不同:$a 1 && 0;$b 1 AND…
"AND" {
return T_LOGICAL_AND;
}
一个叫布尔"与",一个叫逻辑"与"
之所以使用不同的token。那必然有不同之处。这里我也不卖关子了,google能找到很多答案,其实这两个最实质的区别就是优先级不同:
$a = 1 && 0;
$b = 1 AND 0;
var_dump($a);
var_dump($b);
前者会尝试先计算1 && 0,得到结果后再赋给$a,后者会先将1赋给$b;所以结果为
bool(false) int(1)
这下大家应该清楚这里的细节了。用的时候需要注意下。
刚才说的都是语言结构的“别名”,那么php中的函数别名是如何处理的呢?
拿implode和join举例:
basic_function.c中,可以找到如下一行:
PHP_FALIAS(join, implode, arginfo_implode)
那么很明显了,是PHP_FAILIAS这个宏起的作用。下面还能找到许多,比如ini_set和ini_alter也是别名关系。想深究下去,就一路去追这个宏吧。
php.h中
#define PHP_FALIAS ZEND_FALIAS
发现PHP_FALIAS又指向ZEND_FALIAS
zend_API.h中
#define ZEND_FALIAS(name, alias, arg_info) ZEND_FENTRY(name, ZEND_FN(alias), arg_info, 0)
...
#define ZEND_FENTRY(zend_name, name, arg_info, flags) { #zend_name, name, arg_info, (zend_uint) (sizeof(arg_info)/sizeof(struct _zend_arg_info)-1), flags },
再往下就是函数初始化之类的工作了,我们也知道别名函数也知道大概是怎么回事了。
回复讨论(解决方案)
学习了,一般习惯用exit;
涨见识了
学习
今天看一个app上的笑话
也是讲的php exit与die
举的是生孩子的例子.............................
首先,别名这个问题长见识了。
另外 && 和 and 我只知道,当使用 条件1 && 条件2 的时候,如果条件1为false,那么条件2就不会执行,and则会计算2个,今天算是知道本质原因了。
学习了......
首先,别名这个问题长见识了。
另外 && 和 and 我只知道,当使用 条件1 && 条件2 的时候,如果条件1为false,那么条件2就不会执行,and则会计算2个,今天算是知道本质原因了。
不是的
无论是&&还是AND,当左边表达式计算结果为false后都不会再计算右边表达式
$i = 0;
1>2 && $i = 1;
echo $i;
-----------------
$i = 0;
1>2 AND $i = 1;
echo $i;
这两段代码结果都是0。这个例子可以说明这个问题,在这个断言问题上,&&与AND是一样的。
同样
1<2 || $i = 1;和1<2 OR $i = 1;这里的效果也是一样。
&&和AND的区别是,&&比=的优先级高,而AND的优先级比=低,所以:
$a = 1 && 0;
可以理解为:
$a = (1 && 0);
而
$b = 1 AND 0;
可以理解为:
($b = 1) AND 0;
引用 5 楼 none01 的回复:首先,别名这个问题长见识了。
另外 && 和 and 我只知道,当使用 条件1 && 条件2 的时候,如果条件1为false,那么条件2就不会执行,and则会计算2个,今天算是知道本质原因了。
不是的
无论是&&还是AND,当左边表达式计算结果…… 看来我是一直有误解啊,多谢仁兄的耐心解释。
xie xie
谢 谢
第一次见token_get_all()这个函数
学知识
来了
学习了...
其实了解了这里php如何处理的别名问题,我们甚至可以自定义php的语法,自己添加新语言结构作为其他语句的别名了。
只需要zend_language_scanner.l中,在
"exit" {
return T_EXIT;
}
"die" {
return T_EXIT;
}
下面,增加
"stop" {
return T_EXIT;
}
重新编译,恭喜你又多了stop语句可以用。因为只是作为其他语言结构的别名,返回的仍然是现有token,并没有增加新的,所以不需要做任何后续处理。stop语句的效果和exit、die完全一样,纯粹的别名关系。
当然如果你需要增加一个新功能的php语言结构,那也需要增加新的token,并且增加对新token的处理逻辑。就不止改这么一个地方那么简单了。
太感谢楼主了!像这样的技术帖子确实不常见到。
我一直用die,有天我问我同学用过没,他说他exit,我愣了好久才想起是别名···
真是受用啊!!
技术帖,
受用!
牛人!!!!!!
平时用的都到不是很多!理解也不是很清楚,这么一看,啊,原来是这样的!
这些可以写博客上啊
来学习了,受教了,谢谢楼主花时间整理。
学习了
本文原创发布php中文网,转载请注明出处,感谢您的尊重!