Работа над логикой переключения в PHP - PullRequest
0 голосов
/ 31 июля 2009

Я работаю над доступом к таблице БД, которая будет читать текстовую запись, чтобы найти строку ... затем на основе этой строки создайте новую переменную.

Вот источник:

<?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 голосов
/ 31 июля 2009

Вы switch используете $needle, фиксированное значение которого "+0". Таким образом, только ваш default case будет когда-либо исполняться.

0 голосов
/ 04 ноября 2009

Я бы вообще не использовал переключатель. То, что вы пытаетесь сделать, это извлечь число, которое вы можете сделать с помощью регулярного выражения, см. Руководство по PHP . Пример:

$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 + будет соответствовать одной или нескольким цифрам).

0 голосов
/ 31 июля 2009

С $needle = "+0" вы всегда будете в

default:
    $actpurch = "2";
    break;

Возможно, вы захотите прочитать страницу руководства о выражении switch .

...