php 中是否有三元运算符的反向版本?
Is there a backwards version of a ternary operator in php?
如果条件为真,我正在尝试为一个数组分配一些值,否则我想将它分配给另一个数组。我知道这可以通过 if 语句实现。但是,我想知道是否可以用三元运算符的语法来完成?
使用 if 语句看起来像这样
if(condition){
$foo[] = $value;
} else{
$bar[] = $value;
}
但是,我的问题是是否可以这样写?
((condition) ? ($foo[]) : ($bar[])) = $value;
这样的语句只会导致语法错误或致命错误:
(true ? $foo : $bar)[] = 42;
// Fatal error: Cannot use temporary expression in write contex
您也可以尝试参考,但仍然无效:
$arr = true ? &$foo : &$bar;
$arr[] = 42;
// Parse error: syntax error, unexpected token "&"
if 语句可能是您的最佳选择。但是,如果你真的想做这样的事情,你可以使用一个关联数组 foo
和 bar
只是键:
$arr = [
'foo' => [],
'bar' => [],
];
$arr[true ? 'foo' : 'bar'][] = 42;
可以,但与您想要的方式略有不同,如下所示:
第一种方法是在每个三元块中赋值。
true ? ($foo[] = $value) : ($bar[] = $value);
第二种方法是使用 array_push
,如下所示:
array_push(${ true ? 'foo' : 'bar' }, $value);
注意:将true
替换为您的条件。
试试这个。
condition ? ($foo[] = $value) : ($bar[] = $value);
如果条件为真,我正在尝试为一个数组分配一些值,否则我想将它分配给另一个数组。我知道这可以通过 if 语句实现。但是,我想知道是否可以用三元运算符的语法来完成?
使用 if 语句看起来像这样
if(condition){
$foo[] = $value;
} else{
$bar[] = $value;
}
但是,我的问题是是否可以这样写?
((condition) ? ($foo[]) : ($bar[])) = $value;
这样的语句只会导致语法错误或致命错误:
(true ? $foo : $bar)[] = 42;
// Fatal error: Cannot use temporary expression in write contex
您也可以尝试参考,但仍然无效:
$arr = true ? &$foo : &$bar;
$arr[] = 42;
// Parse error: syntax error, unexpected token "&"
if 语句可能是您的最佳选择。但是,如果你真的想做这样的事情,你可以使用一个关联数组 foo
和 bar
只是键:
$arr = [
'foo' => [],
'bar' => [],
];
$arr[true ? 'foo' : 'bar'][] = 42;
可以,但与您想要的方式略有不同,如下所示:
第一种方法是在每个三元块中赋值。
true ? ($foo[] = $value) : ($bar[] = $value);
第二种方法是使用
array_push
,如下所示:array_push(${ true ? 'foo' : 'bar' }, $value);
注意:将true
替换为您的条件。
试试这个。
condition ? ($foo[] = $value) : ($bar[] = $value);