2013-06-16 2 views
2

Я столкнулся с ошибкой, я не могу объяснить себе. $cats['category_id'] - это значение целого числа MySQL, и я хочу, исходя из этого значения, установить описание cat.PHP Динамическая переменная (MySQL) Switch

$properties=array(); 
$properties['description'] = '<strong>Your cat is:</strong> ' . 

switch ($cats['category_id']) { 
    case 0: 
     echo "black"; 
    case 1: 
     echo "white"; 
    case 2: 
     echo "grey"; 
} 
    . '<br />'; 

Вот выдержка, с которой я не лажу. Как создать «дело» заявление, так что $properties['description'] является «динамическая» (на основе $ кошек [ «CATEGORY_ID»]) Если я использую $cats['category_id'] сама по себе, как это:

$properties['description'] = '<strong>Your cat is:</strong> ' . $cats['category_id'] . '<br />'; 

я получить правильное значение.

ответ

1

Вы должны использовать разрыв в конце каждого случая. Так будет выглядеть так:

$properties=array(); 
$properties['description'] = '<strong>Your cat is:</strong> '; 

switch ($cats['category_id']) { 
    case 0: 
    $properties['description'] .= "black"; 
    break; 
    case 1: 
    $properties['description'] .= "white"; 
    break; 
    case 2: 
    $properties['description'] .= "grey"; 
    break; 
} 
$properties['description'] .= '<br />'; 

Ваш синтаксис также был неправильным. Вы конкатенировали строки с помощью оператора switch. Это недопустимо.

+0

Дорогой Патрик, спасибо. Я все еще имею ту же ошибку: Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_SWITCH –

+0

С моим точным кодом? Я просто попробовал это на своем собственном сервере, и все работает отлично. –

+0

Теперь это работает. Большое спасибо Патрику! –

0

Введите имя цвета для некоторой переменной, например $color в каждом случае. Затем используйте:

$properties['description'] = '<strong>Your cat is:</strong> ' . $color . '<br />'; 
+0

Несмотря на то, что ваш код выглядит более чистым, вы не объяснили, что именно он делает неправильно (без 'break' в его команде switch). Я не использовал этот более чистый способ, чтобы сохранить код как можно ближе к оригиналу. –

+0

Да, я видел, что вы объяснили проблему с 'break', поэтому я не хотел повторять то же самое. –

Смежные вопросы