Eğer/else işlevlerimde "else" i kaldıracak olsaydım, $ on_sale değişkeni bazı nedenlerden dolayı değişecek " true "if ifadesi yanlış olduğunda bile. Anahtar durumlarımdaki "else" (if/else) yedeklemesinden nasıl sakınırım
$mm = date('n');
$on_sale = false;
foreach ($services as $service) {
switch ($service) {
case 'Example Service':
if ($mm == 3 || $mm == 4) { #pretend this returns false
$service = '1% Off ' .$service;
$on_sale = true;
} else {
$on_sale = false; #<---- why must I do this?
}
break;
default:
$service;
$on_sale = false;
break;
}
#more code...
}
işe beklenen Ne:
$mm = date('n');
$on_sale = false;
foreach ($services as $service) {
switch ($service) {
case 'Example Service':
if ($mm == 3 || $mm == 4) { #pretend this returns false
$service = '1% Off ' .$service;
$on_sale = true;
}
break;
default:
$service;
$on_sale = false;
break;
}
#more code...
}
DÜZENLEME: değişken değildi on_sale her $ yinelemenin için çok
Yanlışlıkla, foreach döngüsü değişken dış on_sale benim $ ilan "reset".
Kötü:
$mm = date('n');
$on_sale = false;
foreach ($services as $service) {
...
iyi:
$mm = date('n');
foreach ($services as $service) {
$on_sale = false;
...
böylece, işlev, işleri BTW senin 'switch' bir' foreach' içeride ne olduğunu bilmiyoruz - eğer '$ on_sale' TRUE' ayarlanırsa - takip eden aşamada 'True' kalır. '$ For_sale = false;' foreach 'öğesini taşıyabilirsiniz – fusion3k
' Foreach'ı hatırlayın. Hizmetlerin bir dizisini (sanırım) tekrarlıyorsunuz, bu yüzden "$ on_sale" sadece son yinelemenin son değerini içerir. –
Aynı yorum için özür dilerim. Ben benim yayınlandığında ben sayfayı @ fusion3k –