PHP bir switch deyimi içinde durum açıklamalarının toplam sayısını alabilirsiniz?

7 Cevap php

Bir switch deyimi vardır (vaka) örneklerinin toplam sayısını döndürmek için bir yolu var mı? Böyle bir şey:

$id = $_GET['id'];

switch ($id) {
  case "item1" :
  $data = 'something1';
  break;

  case "item2" :
  $data = 'something2';
  break;
}

echo $data;

Ama bunun için akıl onları bu switch ifadeleri ile birden fazla dosya var olduğunu, ama bunların sayısı dosyaya bağlı olarak değişir. Ben ideal "id" arttırırsak, bu switch ifadeleri döngü edebilmek istiyorum. Bu mümkün ise herhangi bir fikir?

7 Cevap

Sadece başka bir değere dayalı değerleri atıyorsanız bunun yerine bir array kullanabilirsiniz:

$idToData = array(
    'item1' => 'something1',
    'item2' => 'something2',
);
$data = 'default';
if (isset($_GET['id']) && array_key_exists($_GET['id'], $idToData)) {
    $data = $idToData[$_GET['id']];
}
echo $data;

Bir dizinin avantajı extended ve öğelerin sayısı count() ile sayabiliriz olmasıdır

Değil $ id değerini değiştirerek ve mola ifadeleri çıkarmadan .. ama yenilgiler bu tür amaç olmadan. Kaç bilmeniz gereken bir nedeni var mı?

Ben sadece ne hakkında öğrenmek istediğiniz dosyaları grep olur

find -name '*php' | xargs grep 'case'

- Ah ben ne sonra konum görüyorum. Vaka yerine saymak çalışırken daha döngü sona erer: Ne yapabileceği bir varsayılan ekleyin. Örneğin

for($id = 1; !$quit; $id++)
{
    switch("item" . $id) {
    case "item1":
         // Do something
         break;
    case "item<n>":
         // Do something else
         break;
    default:
         $quit = true;
    }
}

Soru: neden sadece birbiri ardına açıklama koyarak ... Sadece bir döngü ve durum açıklamaları olmadan tüm bu yapmak değil mi?

Muhtemelen token_get_all() ile soruyorsun ne yapabilirim, ama muhtemelen o gerçekten actual problem için en iyi çözüm değil bulunmaktadır.

Aslında token_get_all() kullanarak güvenilir yapabilirsiniz. Burada find all the define() usages in a PHP file bu fonksiyonu kullanarak bir örnektir. Daha sonra switch ifadeleri ve alt durum ifadeleri aramak için (bağlantılı benzer) bir sonlu durum makinesi oluşturmak gerekir. Siz veya emin doğru iç içe switch deyimleri ile uğraşmak yapmak istemiyor olabilir.

Tamam, URL gibi görünüyor diyelim:

somesite.com / ajax / getinfo.php? id = haber

Sonra $ _GET [id] değeri almak ve bir anahtarı ile işleyebilir.

Ben correcly kodunuzu hayal eğer:

$section=$_GET[id];
switch($section) {
case "1":
break;
.
.
.
default:

}

Bu doğru değilse, yani benim İngilizce bağışlayın. Biraz daha açıklamak Lütfen, biraz belirsiz stills.

Aslında, bu kod çalışacaktır:

$i = 0;
switch(something)
{
    case "item".$i++: //something
        break;
    case "item".$i++: //something
        break;
    default: //something
        break;
}