繁体   English   中英

关于PHP开关的问题

[英]Question about a php switch

给定下面的数组,我可以为交换机执行此操作吗(在交换机内部使用变量$ 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>';
}

不,您必须使用循环来遍历数组。

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

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

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

它不会工作。 切换需求中的变量必须等于要执行的关联代码的任何大小写值。

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

您想根据要执行的操作使用其他结构。

不,您必须使用精确变量,即精确给出一个结果的评估变量,可能是$ cost ['chocoru']。 但是在这种情况下,这毫无意义,所以我猜最好的方法是按名称进行切换,例如:


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM