Dönüştürmek Eğer üçlü Else

5 Cevap

Birisi benim için üçlü için aşağıdaki dönüştürebilirsiniz lütfen?

if ($idd == 1521) {
return "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value";
}
else if ($idd == 1595) { 
return "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads";
}
else if ($idd == 1522) {
return "Business<br /><img src=\"images/b-value.gif\" /><br />Best for Value";
}
else if ($idd == 1596) {
return "Business<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads";
}
else if ($idd == 1523) {
return "Voice Product<br /><img src=\"images/vstream200.gif\" /><br />4 Guaranteed Calls";
}
else if ($idd == 1524) {
return "Voice Product<br /><img src=\"images/vstream350.gif\" /><br />7 Guaranteed Calls";
}
else if ($idd == 1525) {
return "Voice Product<br /><img src=\"images/vstream700.gif\"/><br />14 Guaranteed Calls";
}
else
return "";

Teşekkürler.

5 Cevap

Ternary operator does not appear to be appropriate in your situation. Why don't you use simple mapping?

$map = array(
    1521 => array('Home', 'b-value.gif', 'Best for Value'),
    1595 => array('Home', 'b-dload.gif', 'Best for Downloads'),
    1522 => array('Business', 'b-value.gif', 'Best for Value'),
    // and so on
);
if (array_key_exists($idd, $map)) {
    $item = $map[$idd];
    echo "{$item[0]} <br/> <img src=\"{$item[1]}\"/> <br/> {$item[2]}";
}

Alternatif olarak, dosya veya veritabanından haritayı indirebiliriz.

Kimse sadece ne istedi yapmaya istekli görünüyor gibi, burada üçlü bulunuyor:

return ($idd == 1521
  ? "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
  : ($idd == 1595
    ? "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads"
    : ($idd == 1522
      ? "Business<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
      : ($idd == 1596
        ? "Business<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads"
        : ($idd == 1523
          ? "Voice Product<br /><img src=\"images/vstream200.gif\" /><br />4 Guaranteed Calls"
          : ($idd == 1524
            ? "Voice Product<br /><img src=\"images/vstream350.gif\" /><br />7 Guaranteed Calls"
            : ($idd == 1525
              ? "Voice Product<br /><img src=\"images/vstream700.gif\"/><br />14 Guaranteed Calls"
              : ""
            )
          )
        )
      )
    )
  )
);

Ancak, herkes gibi, ben bir anahtar veya dizi eşleme kullanabilirsiniz ya öneririz.

neden bir anahtarı kullanmak Yüklü?

switch ($idd) {
   case 1521 : return "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value";
   case 1595 : return "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads";
   default: return "";
}

Ben bir diziye böyle şeyler koymak istiyorum

$data = array(
    "_1521" => "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value",
    "_1595" => "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads",
    "_1522" => "Business<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
    );

Sonra bu gibi geri dönüş yapabilirsiniz:

return (array_key_exists("_$idd", $data) ? return $data[$idd] : "");

Bütün bu şey böyle bir işlevi olduğunu varsayarsak

function getIddString($idd) {
    $data = array( /*stuff from above*/);

    return (/* stuff from above */);
}

Eğer o zaman arayabilir ve bu değerlerden birini almak için ihtiyacınız olan her yerde.

Bu sayılar database IDs gibi görünüyorsun. Bu durumda, daha sürdürülebilir bir çözüm bu dizeleri depolamak için veritabanı şemasını değiştirmek olacaktır, ve bunun yerine kimliği dayalı geçmek için çalışmakla sonra sadece çıkış veritabanından değerleri.