skanuj0062 (56)

skanuj0062 (56)



Rozdział 3. ♦ Instrukcje sterujące i funkcje 75

Szczególną uwagę należy zwrócić na instrukcje break, która przerywa wykonywanie całego bloku case. Jej przypadkowe pominięcie może doprowadzić do nieoczekiwanych wyników i błędów w programie. Aby przekonać się, w jaki sposób działa instrukcja switch bez instrukcji break, zmodyfikujmy skrypt z listingu 3.7, usuwając z niego wszystkie instrukcje break. Powstanie wtedy kod widoczny na listingu 3.8.

Listing 3.8. Skrypt po usunięciu instrukcji break

<html>

<head>

<title>Przykladowa strona</title>

</head>

<body>

<?php

tliczbal - 2;

$liczba2 = 1;

switch($liczbal * 5 / ($liczba2 + 1)){ case 5 :

echo ("liczba = 5"): case 15 :

echo("liczba = 15"); default :

echoCZmienna liczba nie jest równa ani 5. ani 15.“);

}

</body>

</html>

Wynik jego działania jest przedstawiony na rysunku 3.2. Ten program nie wykonuje swojego zadania, tak jak byśmy się spodziewali. Jak zatem działa przedstawiony kod? Otóż jeśli w którymś z bloków (przypadków) case zostanie wykryta zgodność z wyrażeniem występującym za switch, zostaną wykonane wszystkie dalsze instrukcje, aż do napotkania instrukcji break lub dotarcia do końca instrukcji switch.

Plik Edycja widok P

rzejdź Zakładki [iarzędzia Pomoę'

;i | Q http://localhosUindex.php

żJ ©

a W

^ Rozpocznij

przygód...

,J Aktualności

liczba = 51iczba = 15Zmienna liczba nie jest równa ani 5, ani 15.

Rysunek 3.2. Ilustracja błędu polegającego na pominięciu instrukcji break

W kodzie z listingu 3.8 zgodność jest stwierdzona już w pierwszym przypadku (case 5), zostaje zatem wykonana instrukcja echo("liczba = 5"). Ponieważ nie występuje po niej * break, w dalszej kolejności zostaje wykonana instrukcja echo("liczba = 15") (nie ma znaczenia, że należy ona do przypadku case 15!). Po tej instrukcji również nie ma break, zatem zostanie wykonana instrukcja występująca po default, czyli echoCZmienna liczba nie jest równa ani 5. ani 15."). Stąd właśnie takie działanie tego skryptu.


Wyszukiwarka

Podobne podstrony:
skanuj0060 (57) Rozdział 3. ♦ Instrukcje sterujące i funkcje 73 można go przedstawić za pomocą instr
skanuj0072 (42) Rozdział 3. ♦ Instrukcje sterujące i funkcje 85 możemy ją zapisać z zastosowaniem sk
skanuj0074 (36) Rozdział 3. ♦ Instrukcje sterujące i funkcje 87 można również zapisać jako: foreach(

więcej podobnych podstron