⊗ppPmLpFl 124 of 447 menu

Praca z flagami w PHP

Teraz nauczymy się pracować z flagami. Flaga to specjalna zmienna, która może przyjmować tylko dwie wartości: true i false. Za pomocą flag można rozwiązywać zadania sprawdzające brak czegoś: na przykład można sprawdzić, że w tablicy nie ma elementu o określonej wartości. Zaczynajmy.

Rozwiążmy następujące zadanie: dana jest tablica z liczbami, należy sprawdzić, czy znajduje się w niej element o wartości 3 czy nie. Jeśli tak - wypiszemy '+++', jeśli nie - wypiszemy '---'.

Na początku spróbujmy wypisać '+++'. W tym celu przeiterujemy po wszystkich elementach naszej tablicy i za pomocą instrukcji if będziemy pytać - czy bieżący element jest równy wartości 3. Jeśli tak - wypiszemy '+++':

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; } } ?>

Ale nasze rozwiązanie nie jest zbyt dobre: bo jeśli w tablicy będzie nie jedna wartość 3, a kilka, to '+++' wypisze się kilka razy. Zmodyfikujmy naszą tablicę (stwórzmy dwa elementy o wartości 3) i przekonajmy się o tym:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // wypisze się kilka razy } } ?>

Poprawmy problem: zakończmy pętlę za pomocą break, jeśli element został już znaleziony:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; break; // kończymy pętlę } } ?>

Spróbujmy teraz zrobić tak, aby, jeśli w tablicy w ogóle nie ma elementów o wartości 3, wypisywało się '---'. Powszechnym błędem będzie dodanie else do naszej instrukcji if - w tym przypadku '---' będzie wypisywane dla wszystkich elementów, które nie są równe 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // wypisze się na elemencie 3 } else { echo '---'; // wypisze się na elementach 1, 2, 4, 5 } } ?>

A zatem, pomysł z dodaniem else - jest złym pomysłem, nie działającym. Do rozwiązywania zadań tego typu (takie zadania spotyka się dość często) używa się tak zwanych flag.

Jak już wspomniano wyżej, flaga - to taka zmienna, która może przyjmować dwie wartości: true lub false.

A zatem, stwórzmy zmienną flag o takim znaczeniu: jeśli jest równa true, to w tablicy znajduje się element 3, a jeśli false, to takiego elementu nie ma.

Początkowo ustawmy zmienną flag na wartość false - to znaczy będziemy uważać, że elementu 3 nie ma w tablicy:

$arr = [1, 2, 3, 4, 5]; $flag = false; // uważamy, że elementu 3 nie ma w tablicy

Następnie uruchomimy pętlę z instrukcją if tak, jak robiliśmy to wcześniej. Jeśli pętla wykryje, że w tablicy znajduje się element 3 - to ustawimy zmienną flag na wartość true i wyjdziemy z pętli za pomocą break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // uważamy, że elementu 3 nie ma w tablicy foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // element jest - przedefiniujemy zmienną $flag break; // wyjdziemy z pętli } } ?>

Odpowiedź na pytanie, czy w tablicy znajduje się 3 czy nie, możemy dać dopiero po pętli. I tę odpowiedź już mamy: po pętli zmienna flag mogła pozostać false lub mogła zmienić swoją wartość na true, jeśli pętla wykryła w tablicy 3:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // tutaj zmienna $flag jest równa albo true, albo false ?>

Teraz po pętli możemy zrobić instrukcję if, która spojrzy na zmienną flag i wypisze na ekran '+++' lub '---':

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } if ($flag === true) { echo '+++'; } else { echo '---'; } ?>

Dana jest tablica:

<?php $arr = ['a', 'b', 'c', 'd', 'e']; ?>

Sprawdź, czy w tej tablicy znajduje się element 'c'. Jeśli tak - wypisz '+++', a jeśli nie - wypisz '---'.

Napisz kod, który będzie sprawdzał liczbę pod kątem tego, czy jest pierwsza, czy nie. Liczba pierwsza dzieli się tylko przez jeden i przez samą siebie, i nie dzieli się przez inne liczby.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć