关于php开关的问题

时间:2009-11-30 11:49:34

标签: php

鉴于下面的数组,我可以为交换机执行此操作(在交换机内使用变量$ cost)吗?

或者切换($需要一个不同的变量)

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

请注意,开关内的$ cost变量与$ cost associative array相同。

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

5 个答案:

答案 0 :(得分:1)

不,你必须用循环迭代数组。

foreach($cost as $product => $price)
{
    echo "You chose " . $product . "<br />";
    echo "the price is" . $price . '<br>';
}

答案 1 :(得分:1)

您有一个名为$cost的变量,它是一个将产品名称映射到其价格的关联数组。您可以将产品名称用作数组索引,不需要任何其他变量或switch语句:

echo "You chose $product <br />n";
echo "the price is " . $cost[$product] . "<br />n";

答案 2 :(得分:0)

它无效。切换需求中的变量必须等于要执行的相关代码的任何大小写值。

答案 3 :(得分:0)

switch语句很像一组if。例如:

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

您希望根据您尝试的操作使用不同的构造。

答案 4 :(得分:0)

不,你必须使用精确的变量,即在评估中只给出一个结果的变量,它可能是$ cost ['chocoru']。但在这种情况下它没有任何意义,所以最好的方法是,我想,按名称切换它,如:


echo "You chose $name <br />";
echo "the price is".$cost[$name].'<br>';