如果條件為真,我試圖為一個陣列分配一些值,否則我想將它分配給另一個陣列。我知道使用 if 陳述句可以做到這一點。但是,我想知道是否可以使用三元運算子的語法來完成?
使用 if 陳述句,它看起來像這樣
if(condition){
$foo[] = $value;
} else{
$bar[] = $value;
}
但是,我的問題是是否可以像這樣寫它?
((condition) ? ($foo[]) : ($bar[])) = $value;
uj5u.com熱心網友回復:
是的,您可以,但與您想要的方式略有不同,如下所示:
第一種方法是在每個三元塊中分配值。
true ? ($foo[] = $value) : ($bar[] = $value);
在線演示
第二種方法是使用
array_push如下:array_push(${ true ? 'foo' : 'bar' }, $value);
在線演示
注意:替換為true您的情況。
uj5u.com熱心網友回復:
像這樣的陳述句只會導致語法錯誤或致命錯誤:
(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;
uj5u.com熱心網友回復:
嘗試這個。
condition ? ($foo[] = $value) : ($bar[] = $value);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/487585.html
上一篇:列的條件乘法
