2016-03-30 27 views
0

atamadan olmadığını kontrol etme: Ben bu değişkenler 'set' olup olmadığını kontrol etmek ve farklı mesela onlara bir görüntü atamak istediğinizdeğişken 'isset' ben şu var farklı

$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'); 
} 

sadece 4 if/else ifadeleri bu ziyade yapmak için daha etkili bir yolu var mı, ben 100 değişkenleri yerine 4.

Teşekkür vardı düşünün. o resmin 'değişkenler ne kadar çeşitli bağlıdır çünkü

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

Eğer döngü onu geleni değerlerle bir dizi kullanmak ve kod az hatları ile hepsini yaparsanız. Olabilir? – Andreas

cevap

3

Tam olarak söylemek zor:/else eğer

+0

Bu, aradığım şeyin çizgileri boyunca daha çok, teşekkürler. – Sudoscience

1

tek bir satırı kullanabilirsiniz. Belirli bir adlandırma kuralı izlerlerse, muhtemelen aşağıdaki gibi bir döngü kullanabilirsiniz, eğer değilse muhtemelen bir sürü kontrol olacaktır, ancak büyük bir if/else zincirine sahip olmak yerine, görüntünün bir işlev içinde ayarlanmasının ana mantığını koyabilirsiniz bu yüzden daha iyi okur.

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

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

    $this->setImage($image); 
} 
Sadece kişisel tercih

, ama başka ifadeleri kullanmadan daha okunabilir olması için kod bulmak, ben de deyim gerçek için değerlendirmeyi amaçlamaktadır eğer, yani etmemeleri durumunda takip etmek daha kolay olduğunu bulmak true true, ancak bir görüntü 'un ayarlanmadığını kontrol etmek yerine, 'un ayarlanmış olup olmadığını kontrol edersiniz.

Son bir not, ancak bir isset() yerine bir empty() kontrol yapmak için daha iyi olabilir.

+1

Bu, “üçlü operatör” olarak adlandırılır. – chris85

+1

Bu, OP'nin aradığı çözümden değil, 100 değişken için 100 satır kod yazıyor. Güvercinler çözümü daha iyi bir yoldur. – Garytje

0

da bunu yapabilirsiniz:

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

foreach ($requiredFields as $field) { 
    if (!isset($data->getFromTable($field))) $this->setImage('bla bla'); else $this->setImage('bla2 bla2'); 
}