2017-06-26 10 views
0

特定の条件($ ringIndex === 1)に応じて変数$ shellまたは$ holeに値を代入したいと思う次の(単純化された)PHPで条件付き代入の省略形はありますか

foreach($rings as $ringIndex=>$ring) { 
    $polygon = $this->getPolygonFromRing($ring); 
    if($ringIndex===1) { 
     $shell = $polygon; 
    } else { 
     $hole = $polygon; 
    } 
    .... 
} 
私がこのような何かが働くだろう多分思っ

必要がない場合、私は、余分な変数($ポリゴン)を使用したくない

foreach($rings as $ringIndex=>$ring) { 
    ($ringIndex===1?$shell:$hole) = $this>getPolygonFromRing($ring); 
    ... 
} 

答えて

3

変数変数を使用できます。

foreach($rings as $ringIndex=>$ring) { 
    ${$ringIndex===1?'shell':'hole'} = $this->getPolygonFromRing($ring); 
    .... 
} 

しかし、私は一般的なアドバイスを追加します:変数変数が必要なときはいつでも、ほとんどの場合は配列を使用する必要があります。変数が$foo1,$foo2などの場合は、インデックス付きの配列にする必要がありますが、場合によってはshellholeという連想配列である必要があります。

+0

私は私がいたずらだったと思った。 –

+0

私はもともとあなたのことを考え出し、それがこのように組み合わされていることに気付きました。 – Barmar

+0

賢明な(しかし潜在的に危険な)ショートカットであり、編集にも大きなアドバイスがあります。 –

0
foreach($rings as $ringIndex => $ring){ 
    $var = $ringIndex === 1 ? 'shell' : 'hole'; 
    $$var = $this->getPolygonFromRing($ring); 
} 
関連する問題