var或var在php中意味着什么?
谁能给我解释下面的代码?
$var OR $var = $something; 谷歌搜索了很多,但找不到任何相关的东西. 为什么OR在左侧而不是右侧的javascript语法?它们是相同的,还是有区别的? 解决方法
tldr;这基本上只是一个初始化步骤,并确保变量$var保存一些非假的值.用英语说出以下内容:
这个怎么运作 这利用了OR的短路特性,如manual中所述: // foo() will never get called as those operators are short-circuit $a = (false && foo()); $b = (true || foo()); $c = (false and foo()); $d = (true or foo()); 虽然我发现这在JavaScript中很常见,但我很少在PHP中看到这种类型的代码.我相信这与以下事实有关:在JavaScript中,您可以调用函数而无需传递任何命名参数: function testFn(param1,param2) { param1 = param1 || 'default value'; param2 = param2 || 'default param2 value'; } testFn(); testFn(12); testFn(12,13); 所有这三个函数调用都是合法的.第一个将参数设置为’default …’值.第二个参数将第一个参数设置为12,第二个参数设置为’default param2 value’,第三个参数将第一个参数设置为12,第二个参数设置为13. 在PHP中你也可以,但你必须为函数签名中的变量提供默认值,否则将导致PHP警告:缺少参数1 for …: function testFn($param1 = 'default1',$param2 = 'default2') { } testFn(); testFn(12); testFn(12,13); 通过函数签名设置默认参数对我来说似乎更容易理解. 啰嗦的具体例子 请考虑以下声明: if(false && functionThatReturnsTrue()) {} 很明显,这总体上不可能是真的,但重要的一点是,functionThatReturnsTrue永远不会被调用.现在,我可以提出完整的条件,以制定一个全新的,完全合法的声明: false && functionThatReturnsTrue(); 仍然没有调用functionThatReturnsTrue.如果我改变&&但是,对于||,它将: function functionThatReturnsTrue() { echo "I'm true!"; } false || functionThatReturnsTrue(); 以上,请注意functionThatReturnsTrue甚至没有返回任何内容!将评估上面的整个表达式(它将整体评估为false),但不会存储在任何地方.另请注意,该函数将被调用并且“我是真的!”将显示在屏幕上. 现在让我们用一个变量赋值替换functionThatReturnsTrue: false || $var = 12; 这里将有三个表达式将被评估:false(没有副作用),$var = 12(将$var设置为12),整个表达式为false || 12(因为为变量赋值的结果是赋值的值,这就是为什么你也可以执行返回$var = 12;)的原因.执行该行代码后,$var将等于12. 现在让我们用$var替换第一个false: $var || $var = 12; 如果$var恰好是null,false,0或”(anything that can evaluate to 让我们再迈出一步,让它变得有点复杂: $whatAmI = ($var || $var = 12); 在这里,我使用前面的表达式,将其包装在括号中,我实际上将结果保存在名为$whatAmI的变量中,而不是将其放入位桶中. $whatAmI将是一个布尔值(因为它保存了||操作的结果)并且可能有两个副作用正在执行此行: > $var可能已更新为值12> $whatAmI现在将保持布尔值true (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |