2

我想在 php 和 codeigniter 库中使用switchcase,我尝试如下代码,但我没有收到输出。我该怎么办?

演示: http ://codepad.viper-7.com/Wq0Noj

function indicators() {
    $CI = &get_instance();
    $Year = '1355';
    $Month = '03';

    switch ($Year) {
        case 1354:
            $key=array('0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6');
            $output = $key[$Month-1];
            break;
        case 1355:
            $key=array('0.6','0.7','0.2','0.4','0.7','0.1','0.7','0.2','0.5','0.9','0.4','0.8');
            $output = $key[$Month-1];
            break;
        echo $output; // The output should be: 0.7
    }
}
4

1 回答 1

3

我认为您的echo需求也超出了switch...检查以验证。

是的,回声需要在外面。比较时实际上应该强制类型。

<?php

$s = '5';

switch ($s) {
    case 5:
        echo "Foo\n";
        break;
    default:
        echo "Bar\n";
        break;
}

echo $s;

输出

Foo
5

对于您的示例:

<?php

function indicators() {
    $Year = '1355';
    $Month = '03';

    switch ($Year) {
        case 1354:
            $key=array('0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6','0.6');
            $output = $key[$Month-1];
            break;
        case 1355:
            $key=array('0.6','0.7','0.2','0.4','0.7','0.1','0.7','0.2','0.5','0.9','0.4','0.8');
            $output = $key[$Month-1];
            break;
    }
    echo $output; // The output should be: 0.7
}

indicators();

输出

0.2

根据代码,这是正确的。 '03' - 1 == 2. $key[2] == '0.2'

正如@vstm 在下面的评论中指出的那样,文档指出“开关/案例确实比较松散”。

于 2012-08-31T07:18:29.283 回答