PHP bunu yapmak istiyorum:
switch (function_foo($bar,$bar2)) {
case $fu:
*Do Stuff*
break;
case $fubar:
*Do Other Stuff*
break;
}
Bu korkunç bir fikir mi? Işe yarayacak mı?
Işlev adı verilecek ve bir değer dönecektir - durum için kullanılacak biridir: bir işlevi kullanarak switch
Tamam.
Bu tam olarak yazma gibi aynı:
$my_var = function_foo($bar,$bar2);
switch ($my_var) {
// ...
}
Ben bir değişken kullanarak tercih etse bile, bu yüzden kod okumak daha kolaydır.
And using variables in the case
is something you don't see often ; but it works fine too ;-)
Alıntı the manual page of switch
a>:
The case expression may be any expression that evaluates to a simple type, that is, integer or floating-point numbers and strings.
Yani, kodunuzu sürece $fu
, çalışacak ve $fubar
basit türü değerleri içerir.
Using a variable as a case
value not often done (as far as I can tell from the code I read), probably because some other languages don't allow that (for instance, C doesn't allow that ; and the switch
/case
structure is borrowed from C) ; but it works :
$a = 1;
$b = 2;
switch (1) {
case $a: echo 'a'; break;
case $b: echo 'b'; break;
}
Çıktısı:
a
Bir işlevi hiç denemedim switch
, (emin değilim Sen bunu bir denemelisiniz), ancak ilk mağaza fonksiyon dönüş bazı değişken değer ve kullanabileceğiniz parametre olarak olmasıdır switch
, örneğin :
$return_value = function_foo($bar, $bar2);
switch ($return_value) {
case $fu:
*Do Stuff*
break;
case $fubar:
*Do Other Stuff*
break;
}
Her durumda {[ile biterse the manual göre, bir PHP switch
deyimi tam if
/ else if
tabloların (bir dizi gibi (4)]}). Bu sizin tekniği çalışması gerektiği anlamına gelir. Sürece fonksiyon isimleri ve değişken isimleri okunabilir gibi, ben onunla herhangi bir sorun düşünemiyorum.
Diğer bazı dillerde, switch
deyimi aslında if
/ else if
tabloları üzerinde bir performans iyileştirme, yani derleme zamanında durum değerlerini bilmek gerekir. PHP bu tür şeyler yapar gibi görünmüyor.