Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
做PHP';s逻辑运算符与JavaScript';s_Php_Logical Operators_Operator Precedence - Fatal编程技术网

做PHP';s逻辑运算符与JavaScript';s

做PHP';s逻辑运算符与JavaScript';s,php,logical-operators,operator-precedence,Php,Logical Operators,Operator Precedence,我最喜欢JavaScript的一点是,逻辑运算符非常强大: &&可用于安全提取对象字段的值,如果对象或字段未初始化,则返回null // returns null if param, param.object or param.object.field // have not been set field = param && param.object && param.object.field; | |可用于设置默认值: // set param to i

我最喜欢JavaScript的一点是,逻辑运算符非常强大:

  • &&
    可用于安全提取对象字段的值,如果对象或字段未初始化,则返回null

    // returns null if param, param.object or param.object.field
    // have not been set
    field = param && param.object && param.object.field;
    
  • | |
    可用于设置默认值:

    // set param to its default value
    param = param || defaultValue;
    

PHP也允许使用逻辑运算符吗?

PHP逻辑运算符不会在任何一侧返回值:它们总是会得到一个布尔值

例如,做:

$result = $a && $b;

将始终使
$result
包含一个布尔值:
true
false
——并且从不
$a
$b
PHP返回
true
false
。但您可以通过以下方式模拟JavaScript的
r=a | | b | | c

$r = $a ?: $b ?: $c;
关于“ands”,类似于:

$r = ($a && $a->foo) ? $a->foo->bar : null;

您可以使用。

修订版设置类似功能:

关于PHP中的逻辑ANDing以实现与JavaScript相同的结果,您可以使用传统三元的变体,如下所示:

<?php
    // prelim
    $object = new stdClass;
    $object->field = 10;
    $param = new stdClass;
    $param->object = $object;

    // ternary variant     
    $field = !($param && $param->object)?:  $param->object->field;
    echo $field,"\n";

    // alternative to ANDing
    $field = get_object_vars( $param->object )["field"] ?? null;
    echo $field,"\n";

不,它们充当布尔表达式运算符,您将返回true或false。我正要发布相同的内容。请注意,PHP5.3.Wow中存在此功能。很高兴看到PHP支持GCC的
?:
习惯用法。我使用的是PHP5.3.5。