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.