fonksiyonu skyCoverage ($ metarClouds) {
    foreach( $metarClouds[0] as $cloudReport ) {
        $coverageCode = substr( $cloudReport, 0, 3 );
        // I check $coverageCode here, and it is indeed "CLR"
            switch( $coverageCode ) {
                case "CLR":
                    $cloudCoverage = 0;
                    break;
                case "FEW":
                    $cloudCoverage = 1/8;
                    break;
                case "SCT":
                    $cloudCoverage = 3/8;
                    break;
                case "BKN":
                    $cloudCoverage = 5/8;
                    break;
                case "OVC":
                    $cloudCoverage = 8/8;
                    break;
            }
    $skyCoverage = $skyCoverage + $cloudCoverage;
    }
// I check $skyCoverage here, and it is indeed 0
    switch ( $skyCoverage ) {
        case ( $skyCoverage >= 1.00 ):
                $skyCondition = "Overcast";
                // I do an echo $skyCoverage; here, and it actually spits out 0 still, even though it obviously shouldn't do anything at all
                break;
        case ( $skyCoverage >= 0.75 ):
                $skyCondition = "Cloudy";
                break;
        case ( $skyCoverage >= 0.625 ):
                $skyCondition = "Mostly Cloudy";
                break;
        case ( $skyCoverage >= 0.5 ):
                $skyCondition = "Scattered Clouds";
                break;
        case ( $skyCoverage >= 0.375 ):
                $skyCondition = "Partly Cloudy";
                break;
        case ( $skyCoverage >= 0.125 ):
                $skyCondition = "Mostly Clear";
                break;
        case ( $skyCoverage < 0.125 ):
                $skyCondition = "Clear";
                break;
    }
// $skyCoverage is still zero here
return $skyCondition;
// Somehow $skyCondition is "Overcast" with $skyCoverage = 0
}
Tipik olarak, birden fazla bulut tabakası görülmektedir ve $metarClouds[0] döngü sırasında, bu nedenle, her bir $cloudCoverage katmanında diğer üzerine ilave edilir. Hiçbir bulut tabakası (açık veya "CLR") söz konusu ise, o zaman 0 olarak kayıt olmanız gerekmektedir. Ve öyle. Ancak, kod nasılsa "Bulutlu" döndürür.
Ben o beklediğiniz "CLR" geçirilen sağlamak için her iki switch ifadeleri kontrol ettik, ve ben beklediğiniz zaman o $cloudCoverage sıfıra özdeştir. Bu, her zaman. Ve, $skyCoverage hala dönmeden önce sıfır olarak kaydeder.
PHP nasılsa nasılsa ... yanlış işleme gibi boş ve ... onu tedavi olmadığından emin olmak için $cloudCoverage 1-1, 0/1, 0.0, veya başka bir yöntemle ayarı denedim. Ben böylece $cloudCoverage = 0.01 yeniden yazmak ve ilk anahtarı aracılığıyla CLR geçerseniz, her şeyi doğru ikinci anahtarı aracılığıyla geliyor: Temizle. Ben de case 0: vb son davayı ayarlama denedim, ama yine aynı hatalı sonuç var ettik.