在 PHP 中是否有用于条件分配的 shorthand
Is there a shorthand for conditional assigning in PHP
我有以下(简化的)代码片段,我想根据特定条件为变量 $shell 或 $hole 赋值($ringIndex===1)
foreach($rings as $ringIndex=>$ring) {
$polygon = $this->getPolygonFromRing($ring);
if($ringIndex===1) {
$shell = $polygon;
} else {
$hole = $polygon;
}
....
}
如果没有必要,我不想使用额外的变量($polygon)
我想也许这样的事情会奏效:
foreach($rings as $ringIndex=>$ring) {
($ringIndex===1?$shell:$hole) = $this>getPolygonFromRing($ring);
...
}
foreach($rings as $ringIndex => $ring){
$var = $ringIndex === 1 ? 'shell' : 'hole';
$$var = $this->getPolygonFromRing($ring);
}
你可以使用变量变量。
foreach($rings as $ringIndex=>$ring) {
${$ringIndex===1?'shell':'hole'} = $this->getPolygonFromRing($ring);
....
}
但是,我将添加我的一般建议:任何时候您发现自己需要可变变量时,您几乎应该总是使用数组来代替。如果变量像 $foo1
、$foo2
等,那么它应该是一个索引数组,但在您的情况下,它可能应该是一个带有键 shell
和 [=14= 的关联数组].
我有以下(简化的)代码片段,我想根据特定条件为变量 $shell 或 $hole 赋值($ringIndex===1)
foreach($rings as $ringIndex=>$ring) {
$polygon = $this->getPolygonFromRing($ring);
if($ringIndex===1) {
$shell = $polygon;
} else {
$hole = $polygon;
}
....
}
如果没有必要,我不想使用额外的变量($polygon)
我想也许这样的事情会奏效:
foreach($rings as $ringIndex=>$ring) {
($ringIndex===1?$shell:$hole) = $this>getPolygonFromRing($ring);
...
}
foreach($rings as $ringIndex => $ring){
$var = $ringIndex === 1 ? 'shell' : 'hole';
$$var = $this->getPolygonFromRing($ring);
}
你可以使用变量变量。
foreach($rings as $ringIndex=>$ring) {
${$ringIndex===1?'shell':'hole'} = $this->getPolygonFromRing($ring);
....
}
但是,我将添加我的一般建议:任何时候您发现自己需要可变变量时,您几乎应该总是使用数组来代替。如果变量像 $foo1
、$foo2
等,那么它应该是一个索引数组,但在您的情况下,它可能应该是一个带有键 shell
和 [=14= 的关联数组].