2

phpとcodeigniterライブラリでswitchとを使用したいのですが、次のコードで試してみましたが、出力がありません。case私は何をしますか?

デモ: 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のコメントで指摘されているように、ドキュメントには「switch/caseは緩い比較を行う」と記載されています。

于 2012-08-31T07:18:29.283 に答える