⊗ppPmCdBNM 100 of 447 menu

PHP'de break'in İsteğe Bağlı Olması

break komutu isteğe bağlıdır. Ancak, onsuz case bloklarının davranışı beklenmedik olacaktır. Bir örnekle inceleyelim. Şu şekilde bir kodumuz olduğunu varsayalım:

<?php $num = 1; switch ($num) { case 1: echo 1; break; case 2: echo 2; break; case 3: echo 3; break; } ?>

İçindeki tüm break ifadelerini kaldıralım, ve $num değişkenine başlangıç olarak 3 sayısını atayalım.

Başlangıçta her şey eskisi gibi çalışacaktır:

<?php $num = 3; // buraya 3 sayısını yazalım switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Çalıştırdıktan sonra kod 3 yazdıracak - her şey yolunda ?>

Şimdi $num değişkenine 2 sayısını atayalım. Bu durumda, beklenildiği gibi case 2 çalışacak, ardından beklenmedik bir şekilde case 3 de çalışacaktır:

<?php $num = 2; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Çalıştırdıktan sonra kod önce 2, sonra 3 yazdıracak ?>

Eğer $num değişkenine 1 sayısı atanırsa, tüm case yapıları çalışacaktır:

<?php $num = 1; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Çalıştırdıktan sonra kod önce 1, sonra 2, ardından 3 yazdıracak ?>

Yani, break olmadığında, planlanan case çalıştıktan sonra, onun altındaki tüm case ifadeleri de çalışır. Bazen bu özellik problem çözmede kullanılır.

Aşağıdaki örnekte, eğer $num değişkeninin değeri 1 veya 2 ise, $res değişkenine 'a' yazılır. Eğer $num değişkeninin değeri 3 ise, $res değişkenine 'b' yazılır:

<?php $num = 1; switch ($num) { case 1: case 2: $res = 'a'; break; case 3: $res = 'b'; break; } echo $res; ?>

Yukarıda, bazen bu özelliğin kullanıldığını yazdım, ancak genel olarak, kodu çok açık olmadığı için kullanılmasını tavsiye etmiyorum.

Böyle bir problemi if yapıları ile çözmek daha anlaşılırdır:

<?php $num = 1; if ($num == 1 or $num == 2) { $res = 'a'; } if ($num == 3) { $res = 'b'; } echo $res; ?>
swazplenms