研究php switch-case逻辑

时间:2009-07-30 23:17:51

标签: php switch-statement

我正在访问一个db表,该表将读取文本条目以查找字符串...然后根据该字符串创建一个新变量。

这是来源:

<?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 个答案:

答案 0 :(得分:0)

$needle = "+0"以后,您将始终以

结束
default:
    $actpurch = "2";
    break;

您可能想再次阅读manual's page about the switch statement

答案 1 :(得分:0)

switch $needle"+0",其固定值为default。因此,只会执行case {{1}}。

答案 2 :(得分:0)

我不会完全使用开关。您要做的是提取您可以使用正则表达式执行的数字,请参阅PHP Manual。一个例子:

$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;

正则表达式将匹配模式的字符串(\ d +将匹配一个或多个数字)。