Php Fonksiyonda İf Yerine Daha Kolay Ne Olabilir
-
Herkese merhaba,
İlk öncelikle mesleğim ya da eğitimim php üzerine değil hatta yazılımla alakasız eğitim aldım. Sadece php ile uğraşmak hoşuma gidiyor kafamı dağıtıyor.
Konuya gelelim
yaşadığı şehir diye form elemanım var burada listeden seçilebiliyor ben de bir şekilde bu listedeki şehirler harici bir post gönderirlerse engellemek için şöyle bir fonksiyon yazdım.
function SehirKontrol($a){ $sehir=$a; if ( $sehir == "Türkiyede yaşamıyorum" OR $sehir == "Adana" OR $sehir == "Adıyaman" OR $sehir == "Afyonkarahisar" OR $sehir == "Ağrı" OR $sehir == "Amasya" OR $sehir == "Ankara" OR $sehir == "Antalya" OR $sehir == "Artvin" OR $sehir == "Aydın" OR $sehir == "Balıkesir" OR $sehir == "Bilecik" OR $sehir == "Bingöl" OR $sehir == "Bitlis" OR $sehir == "Bolu" OR $sehir == "Burdur" OR $sehir == "Bursa" OR $sehir == "Çanakkale" OR $sehir == "Çankırı" OR $sehir == "Çorum" OR $sehir == "Denizli" OR $sehir == "Diyarbakır" OR $sehir == "Edirne" OR $sehir == "Elazığ" OR $sehir == "Erzincan" OR $sehir == "Erzurum" OR $sehir == "Eskişehir" OR $sehir == "Gaziantep" OR $sehir == "Giresun" OR $sehir == "Gümüşhane" OR $sehir == "Hakkâri" OR $sehir == "Hatay" OR $sehir == "Isparta" OR $sehir == "Mersin" OR $sehir == "İstanbul" OR $sehir == "İzmir" OR $sehir == "Kars" OR $sehir == "Kastamonu" OR $sehir == "Kayseri" OR $sehir == "Kırklareli" OR $sehir == "Kırşehir" OR $sehir == "Kocaeli" OR $sehir == "Konya" OR $sehir == "Kütahya" OR $sehir == "Malatya" OR $sehir == "Manisa" OR $sehir == "Kahramanmaraş" OR $sehir == "Mardin" OR $sehir == "Muğla" OR $sehir == "Muş" OR $sehir == "Nevşehir" OR $sehir == "Niğde" OR $sehir == "Ordu" OR $sehir == "Rize" OR $sehir == "Sakarya" OR $sehir == "Samsun" OR $sehir == "Siirt" OR $sehir == "Sinop" OR $sehir == "Sivas" OR $sehir == "Tekirdağ" OR $sehir == "Tokat" OR $sehir == "Trabzon" OR $sehir == "Tunceli" OR $sehir == "Şanlıurfa" OR $sehir == "Uşak" OR $sehir == "Van" OR $sehir == "Yozgat" OR $sehir == "Zonguldak" OR $sehir == "Aksaray" OR $sehir == "Bayburt" OR $sehir == "Karaman" OR $sehir == "Kırıkkale" OR $sehir == "Batman" OR $sehir == "Şırnak" OR $sehir == "Bartın" OR $sehir == "Ardahan" OR $sehir == "Iğdır" OR $sehir == "Yalova" OR $sehir == "Karabük" OR $sehir == "Kilis" OR $sehir == "Osmaniye" OR $sehir == "Düzce") { echo "0"; } else{ echo "1"; } return; }
Bu fonksiyon yerine daha light bir şey ne yapabilirim?
-
-
ComputerWolf bunu yazdı
Hocam bu ne :)
--> array lookup
yarım saat belki de daha fazla uğraştım :D :D :D :D
edit= sağ ol hocam arraylardan haberim var ama hiç kullanmadım kullandıysam da hazır kullandım
-
Yaptığın işin boyutunu bilmiyorum, database işine falan girmiyorum ama en azından bir array içinde şehirlerin olsa daha rahat hareket edersin. İşin performans boyutu da tartışılır. PHP hiç yazmadım ama illaki bir array search fonksiyonu vardır. Kötü yazmak sorun değil, kodunu iyileştirmen asıl önemli nokta. :)
https://www.php.net/manual/en/function.array-search.php
-
select option valuelere sayı verı boyle verı gırısı mantıklı degıl pek
ek olarak :D
trde ıyı yazılımcılara bak en ıyı durumdakı yuz yazılımcıdan hangısı okulda php gormus mufradatına bak :)
alakalı bolum mezunları arkadaslara sor sektorel yazılım ıle ılgılı okulda ne ogrenmısler Ç:)
hipokondriyak tarafından 10/Nis/20 00:35 tarihinde düzenlenmiştir -
hocam her dilde arrayin içinde bir değer varmı kontrol etme yolu vardır, phpde de var.
bir şehirler arrayın olsun :
$sehirler = ['adana', 'ankara', vs vs vs];
bunu kontrol etmek için iki yol var php de. birisi isset.
if(isset($sehirler[$a])){ //sehir senin listede var}
ikincisi array_key_exists: if(array_key_exists($a, $sehirler)){//sehir senin listede var}
eğer diğer array fonksiyonlarıyla bişeyler yapacaksan dikkat etmen gereken şey, php bazi array fonksiyonları elemanın arraydeki sırasını döndürür. mesela sen array_search("Türkiyede yaşamıyorum", $sehirler) yazdığında "Türkiyede yaşamıyorum" u arrayde aratıp sana onun arraydeki indexini vericek, bu durumda indexi 0.
bu durumda sen if(array_search("Türkiyede yaşamıyorum", $sehirler)) dersen false alırsın, çünkü php o sıfırı booleana çeviricek, boolean sıfırda false oluyor. bunun çözümü de üç tane eşittir kullanmak. if(array_search("Türkiyede yaşamıyorum", $sehirler) !== false) gibi.
-
MySQL falan ilgini cekerse, oradan hem formundaki listeye cektirebilirsin, hemde bu fonksyonda konrellerini yaptirirsin... Ama DBye hic girmeyek dersen, arraye at bari mq diyorum arkadaslar gibi... Ama Buda calisirmi ? E calisir :P haha
-
function sehirKontrol($girilenSehir)
{
$sehirler = array("Türkiyede yaşamıyorum","Adana","Adıyaman","Afyonkarahisar","Ağrı","Amasya","Ankara","Antalya","Artvin","Aydın","Balıkesir","Bilecik","Bingöl","Bitlis","Bolu","Burdur","Bursa","Çanakkale","Çankırı","Çorum","Denizli","Diyarbakır","Edirne","Elazığ","Erzincan","Erzurum","Eskişehir","Gaziantep","Giresun","Gümüşhane","Hakkâri","Hatay","Isparta","Mersin","İstanbul","İzmir","Kars","Kastamonu","Kayseri","Kırklareli","Kırşehir","Kocaeli","Konya","Kütahya","Malatya","Manisa","Kahramanmaraş","Mardin","Muğla","Muş","Nevşehir","Niğde","Ordu","Rize","Sakarya","Samsun","Siirt","Sinop","Sivas","Tekirdağ","Tokat","Trabzon","Tunceli","Şanlıurfa","Uşak","Van","Yozgat","Zonguldak","Aksaray","Bayburt","Karaman","Kırıkkale","Batman","Şırnak","Bartın","Ardahan","Iğdır","Yalova","Karabük","Kilis","Osmaniye","Düzce");
return (array_search($girilenSehir, $sehirler) === FALSE ? "Yanlış seçim yaptınız": "Tamamdır");
}echo sehirKontrol("Ankara");
echo sehirKontrol("istanbul");
echo sehirKontrol("Mesaçüses"); -
Veriyi gruplamaya ne dersin hocam ? Bir JSON Object yaz ve 1 değer tut. Bu değeri sağlıyorsa true veya false dönersin.
Bu şekilde uzun uzadıya if yazman kodun okunabilirliğini azaltıyor sadece. Görüntü olarak da çok kötü. Alternatif olarak Array_search yada bir JSON object tutarak yapabilirsin bunu.
if(obj.valid) echo "1"; else echo "0"; dersin.
-
https://www.w3schools.com/php/func_array_in_array.asp
-
function SehirKontrol($option){ $cities = ["türkiyede yaşamıyorum", "adana", "adıyaman", "afyonkarahisar", "ağrı", "amasya", "ankara", "antalya", "artvin", "aydın", "balıkesir", "bilecik", "bingöl", "bitlis", "bolu", "burdur", "bursa", "çanakkale", "çankırı", "çorum", "denizli", "diyarbakır", "edirne", "elazığ", "erzincan", "erzurum", "eskişehir", "gaziantep", "giresun", "gümüşhane", "hakkâri", "hatay", "isparta", "mersin", "i̇stanbul", "i̇zmir", "kars", "kastamonu", "kayseri", "kırklareli", "kırşehir", "kocaeli", "konya", "kütahya", "malatya", "manisa", "kahramanmaraş", "mardin", "muğla", "muş", "nevşehir", "niğde", "ordu", "rize", "sakarya", "samsun", "siirt", "sinop", "sivas", "tekirdağ", "tokat", "trabzon", "tunceli", "şanlıurfa", "uşak", "van", "yozgat", "zonguldak", "aksaray", "bayburt", "karaman", "kırıkkale", "batman", "şırnak", "bartın", "ardahan", "iğdır", "yalova", "karabük", "kilis", "osmaniye", "düzce"]; return ((array_search(strtolower($option), $cities) === true) ? "1" : "0"); }