Вопрос про php-переключатель - PullRequest
0 голосов
/ 30 ноября 2009

Учитывая массив ниже, могу ли я сделать это для коммутатора (используйте переменную $ cost внутри коммутатора)?

Или переключатель ($ здесь нужна другая переменная)

$cost=array(chocoru =>1, oeenergy =>0.35, lemondew =>0.55, chcmyst =>0.25, drsalty =>0.75);

Обратите внимание, что переменная $ cost внутри коммутатора совпадает с ассоциативным массивом $ cost.

switch($cost)
{
case 1:
echo "You chose lemondew <br />";
echo "the price is".$cost["lemondew"]'<br>';
}

Ответы [ 5 ]

1 голос
/ 30 ноября 2009

У вас есть переменная с именем $cost, которая представляет собой ассоциативный массив, сопоставляющий названия продуктов с их ценой. Вы можете использовать имя продукта в качестве индекса массива, нет необходимости в какой-либо другой переменной или операторе switch:

echo "You chose $product <br />n";
echo "the price is " . $cost[$product] . "<br />n";
1 голос
/ 30 ноября 2009

Нет, вы должны перебирать массив с помощью цикла.

foreach($cost as $product => $price)
{
    echo "You chose " . $product . "<br />";
    echo "the price is" . $price . '<br>';
}
0 голосов
/ 30 ноября 2009

Нет, вы должны использовать точную переменную, то есть такую, которая дает ровно один результат в оценке, это может быть $ cost ['chocoru']. Но в этом случае это не имеет смысла, поэтому, я думаю, лучше всего поменять его по имени, например:

<code>
echo "You chose $name <br />";
echo "the price is".$cost[$name].'<br>';
0 голосов
/ 30 ноября 2009

A switch оператор очень похож на набор if s. Например:

switch ($var) {
    case 1:
        $other_var = 6;
        break;
    case 2:
        $other_var = 3;
        break;
    case 3:
        $other_var = 2;
        break;
    default:
        $other_var = 0;
        break;
}

логически эквивалентно:

if ($var == 1) {
    $other_var = 6;
}
else if ($var == 2) {
    $other_var = 3;
}
else if ($var == 3) {
    $other_var = 2;
}
else {
    $other_var = 0;
}

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

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

Это не сработает. Переменная в параметре switch должна быть равна любому из значений регистра для соответствующего кода, который должен быть выполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...