2016-03-30 10 views
0

それを割り当てるかどうかのチェック:私はこれらの変数が「セット」されているかどうかを確認し、違っ例えば、それらに画像を割り当てる変数「ISSET」とは、私は次のようしている異なっ

$front = $data->getFromTable('Front'); 
$back = $data->getFromTable('Back'); 
$side = $data->getFromTable('Side'); 
$top = $data->getFromTable('Top'); 

if (!isset($front)) 
{ 
    $this->setImage('bla bla'); 
} 
else 
{ 
    $this->setImage('bla2 bla2'); 
} 

ちょうど4のif/else文をこれよりもむしろを行うには、より効率的な方法がありますが、私は100個の変数ではなく、4

感謝していた想像してみてください。

+0

あなたがループにそれをできたすべての値を持つ配列を使用すると、コードの以下の行でそれをすべて行う場合。多分? – Andreas

答えて

3

を。彼らが特定の命名規則に従えば、おそらく以下のようなループを使うことができます。もしそうでなければ、おそらくたくさんの小切手になるでしょうが、巨大なif/elseチェーンを持っているのではなく、それはよりよく読む。

$requiredFields = ['front', 'back', 'side', 'top']; 

foreach ($requiredFields as $field) { 
    $image = $field . 'NotSetImage.jpg'; 
    if (isset($field)) { 
     $image = $field . 'SetImage.jpg'; 
    } 

    $this->setImage($image); 
} 

ただ、個人的な好み、私はコードがelse文を使用することなく、より読みやすいことがわかり、私はまた、あなたの文がに評価することを目指していた場合ならば、私は意味するものではありません従うことが簡単だということを見つけますブール値はtrueですが、画像が設定されていないかどうかを確認するのではなく、がに設定されているかどうかをチェックします。

最後にメモしますが、isset()のチェックではなく、empty()のチェックを行う方がよい場合があります。

+0

これは私が探していたもののラインに沿っています。ありがとうございました。 – Sudoscience

1

あなたは1行のif/else文を使用することができます:それは「画像」の変数がどのように様々に依存しているため、それは正確に言うのは難しいです

$front = !isset($front) ? $this->setImage('bla bla') : $this->setImage('bla2 bla2'); 
+1

これは、「3項演算子」と呼ばれます。 – chris85

+1

これは、ソリューションOPが探しているのではなく、100変数のコードを100行作成します。ピジョンズのソリューションはより良い方法です。 – Garytje

0

あなたもこれを行うことができます。

$requiredFields = ['front', 'back', 'side', 'top']; 

foreach ($requiredFields as $field) { 
    if (!isset($data->getFromTable($field))) $this->setImage('bla bla'); else $this->setImage('bla2 bla2'); 
} 
関連する問題