Php switch-case mantık üzerinde çalışıyor

3 Cevap php

Ben yeni bir değişken oluşturmak, sonra o dizeye dayalı ... bir dize bulmak için bir metin girişi okuyacağı bir db tablo erişimini üzerinde çalışıyorum.

İşte kaynak bulunuyor:

<?php

    $haystack = "Additional Licenses: +2 Licenses /br/ Back-up CD-ROM: No";
    $needle = "+0";

    switch ($needle) {
      case '+1':
          if (strstr($haystack, $needle)) {
              $actpurch = "3";
          } else {
              break;
          }
      case '+2':
          if (strstr($haystack, $needle)) {
              $actpurch = "4";
          } else {
              break;
          }
      case '+3':
          if (strstr($haystack, $needle)) {
              $actpurch = "5";
          } else {
              break;
          }
      default:
          $actpurch = "2";
          break;
    }

    echo "Activations Purchased:  " . $actpurch;

?>

3 Cevap

$needle = "+0" sen her zaman bitireceğiz yana

default:
    $actpurch = "2";
    break;

Yine manual's page about the switch deyimi okumak isteyebilirsiniz.

Sen switch "+0" sabit bir değere sahip olan, $needle üzerine ing demektir. Böylece sadece default case şimdiye kadar yürütecek.

Ben tamamen bir anahtar kullanmak olmaz. Ne yapmaya çalışıyorsun PHP Manual görmek, bir düzenli ifade ile yapabilirsiniz, hangi sayı ayıklamak olduğunu. Örnek:

$haystack = "Additional Licenses: +2 Licenses /br/ Back-up CD-ROM: No";
$licences = 2;

$extra = 0;
if (preg_match('/Additional Licenses: \+(\d+) Licenses/', $haystack, $matches)) {
        $extra = intval($matches[1]);
} else {
        die('Error: couldn\'t find number of licences');
}

$actpurch = $licences + $extra;
echo $actpurch;

Normal ifade deseni karşı dize (\ d + bir veya daha fazla basamak maç olacak) maç olacak.