在PHP中使用OR运算符而不是true或false获取文字表达式值

Ric*_*ard 6 php

在Javascript中,我们可以方便地获得||运营商提供的各种选项之一.例如:

console.log('a' || '' || 0); // Yields 'a'
console.log(0 || 'b' || 'a'); // Yields 'b'
Run Code Online (Sandbox Code Playgroud)

上面的结果很容易分配给这样的变量:

let test = 'a' || '' || 0;

但是在PHP中,当我尝试这个时:

$test = 'a' || '' || 0;给了我一个$test = 11意义true.在PHP中有没有办法获得导致它产生的表达式的字面值true

Kar*_*ski 2

您可以使用Elvis 运算符来实现此目的,例如

$test = 'a' ?: '' ?: 0;
var_dump($test);
> string(1) "a"

$test2 = 0 ?: 'b' ?: 'a';
var_dump($test2);
> string(1) "b"
Run Code Online (Sandbox Code Playgroud)

还有空合并运算符 (??),但仅当第一个值为空时它才采用第二个值,因此例如0 ?? 'a'将采用 0,因为它不为空。