程序语句 php 哪个最好
procedural statement php which one is the best
我有一个关于程序的问题 php。这里有两个例子:
示例 1
if( $test['rank'] > 1 && $text == 'test' || $test['admin'] == 1 && $text == 'test'){
示例 2
if( $text == 'test' && ( $test['rank'] > 1 || $test['admin'] == 1 ) ){
即使这两种方式似乎都有效,除了它们的书写方式之外还有什么不同吗?
不,除了第一个由于缺少括号而更难阅读之外没有区别。
因为 > 和 == 在 && 和 || 之前被评估,你可以这样写你的代码:
$p = $test['rank'] > 1;
$q = $text == 'test';
$r = $test['admin'] == 1;
if( $p && $q || $r && $q ) {
如果您检查 PHP operators precedence,您会在 || 之前对 && 进行求值,因此您有:
if( ( $p && $q ) || ( $r && $q ) ) {
所以... $q 必须在两个表达式中都满足,使其等效于:
if( $q ) {
if( $p || $r ) {
相当于:
if( $q && ( $p || $r ) ) {
替换 $p、$q 和 $r 你最终得到:
if( $text == 'test' && ( $test['rank'] > 1 || $test['admin'] == 1 ) ) {
多田!
我有一个关于程序的问题 php。这里有两个例子:
示例 1
if( $test['rank'] > 1 && $text == 'test' || $test['admin'] == 1 && $text == 'test'){
示例 2
if( $text == 'test' && ( $test['rank'] > 1 || $test['admin'] == 1 ) ){
即使这两种方式似乎都有效,除了它们的书写方式之外还有什么不同吗?
不,除了第一个由于缺少括号而更难阅读之外没有区别。
因为 > 和 == 在 && 和 || 之前被评估,你可以这样写你的代码:
$p = $test['rank'] > 1;
$q = $text == 'test';
$r = $test['admin'] == 1;
if( $p && $q || $r && $q ) {
如果您检查 PHP operators precedence,您会在 || 之前对 && 进行求值,因此您有:
if( ( $p && $q ) || ( $r && $q ) ) {
所以... $q 必须在两个表达式中都满足,使其等效于:
if( $q ) {
if( $p || $r ) {
相当于:
if( $q && ( $p || $r ) ) {
替换 $p、$q 和 $r 你最终得到:
if( $text == 'test' && ( $test['rank'] > 1 || $test['admin'] == 1 ) ) {
多田!