Match Deyimi
ℹ️ PHP 8 veya üstü gereklidir.
Switch'e benzeyen Match deyimi, bir değere denk gelen içeriği, değişkene atayabilmenizi sağlar. Anlamanız için aşağıdaki örneği incelemeniz gerek.
<?php
$sevdigim_hayvan = "kedi";
$sevdigim_hayvan_sesi = match($sevdigim_hayvan){
'köpek' => 'hav',
'kedi' => 'miyav',
'eşşek' => 'ai', // Çok saçma örnek öyle değil mi? Bu arada ben bir yorum kısmıyım.
};
echo "Sevdiğiniz hayvan olan ".$sevdigim_hayvan.", şu şekilde ses çıkarır: ".$sevdigim_hayvan_sesi;
?>
Yukarıdaki kodun çıktısı: Sevdiğiniz hayvan olan kedi, şu şekilde ses çıkarır: miyav
⚠️ Match kısmının sonu noktalı virgül ile bitmesi gerekmektedir.
Match deyimi Integer Veri Türü ile kullanım örneğine de bakın:
<?php
$sayi = 3;
$sira_kimde = match($sayi){
1 => "ali",
2 => "veli",
3 => "ahmet",
4 => "mehmet",
};
echo "Sıra, ".$sayi." sayısına sahip kişi: ".$sira_kimde;
?>
Bir sonuca, birden fazla değer atanabilir. Örneğin, yukarıdaki kodda 1, 2 ve 3, 4 sayılarının aynı değere sahip olmasını istiyorsak aşağıdaki kod şeklinde değişiklik yapılabilir:
<?php
$sayi = 3;
$sira_kimde = match($sayi){
1 => "ali",
2 => "ali",
3 => "veli",
4 => "veli",
};
echo "Sıra, ".$sayi." sayısına sahip kişi: ".$sira_kimde;
?>
Ancak virgül ile bu kodu daha anlaşılır hale getirebiliriz ve eşleşme olmaması durumunda varsayılan değeri default
ile atayabiliriz. Yani böyle:
<?php
$sayi = 3;
$sira_kimde = match($sayi){
1, 2 => "ali",
3, 4 => "veli",
default => "hiç kimse",
};
echo "Sıra, ".$sayi." sayısına sahip kişi: ".$sira_kimde;
?>
Yukarıdaki örneğin çıktısı: Sıra, 3 sayısına sahip kişi: veli
ancak $sayi
değişkeni 1 ile 4 arasındaki sayılar dışında farklı bir sayı olsaydı bu çıktıyı verirdi: Sıra, 5 sayısına sahip kişi: hiç kimse