Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem zatrzymaniem pętli switch-em z klucza array
.Wojtek
post 22.05.2019, 10:31:36
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


Witam wszystkich serdecznie. Mam następujący kod, który ma pominąć dalszego wykonywania operacji na "wierszu", gdy spełniony jest warunek $row['On_Off'] == 0
  1. $arr_co_and_cu =
  2. 0 => array (0 => '2','Id' => '2',1 => '0','On_Off' => '0'),
  3. 1 => array (0 => '3','Id' => '3',1 => '1','On_Off' => '1'),
  4. );
  5. var_dump($arr_co_and_cu);
  6.  
  7. $i = 0;
  8. foreach($arr_co_and_cu as $row) {
  9. ++$i;
  10. switch ($row['On_Off']) {
  11. case '0':
  12. echo "zatrzymano dalsze wykonywanie pętli nr $i, ponieważ 'On_Off' = ".$row['On_Off']." <br>";
  13. break 1; /* Exit only the switch. */
  14. }
  15. echo "nie zatrzymano pętli nr $i, ponieważ 'On_Off' = ".$row['On_Off']."<br>";
  16. }

Kod daje następujący wynik:
Kod
zatrzymano dalsze wykonywanie pętli nr 1, ponieważ 'On_Off' = 0
nie zatrzymano pętli nr 1, ponieważ 'On_Off' = 0
nie zatrzymano pętli nr 2, ponieważ 'On_Off' = 1

Skoro pętla nr 1 "się zatrzymała", to nie chciałbym, żeby jednak się wciąż wykonywała i tu problem haha.gif
Chciałbym uzyskać wynik:
Kod
zatrzymano dalsze wykonywanie pętli nr 1, ponieważ 'On_Off' = 0
nie zatrzymano pętli nr 2, ponieważ 'On_Off' = 1


var_dump array wygląda następująco:
Kod
array (size=2)
  0 =>
    array (size=4)
      0 => string '2' (length=1)
      'Id' => string '2' (length=1)
      1 => string '0' (length=1)
      'On_Off' => string '0' (length=1)
  1 =>
    array (size=4)
      0 => string '3' (length=1)
      'Id' => string '3' (length=1)
      1 => string '1' (length=1)
      'On_Off' => string '1' (length=1)

Wolałbym nie zmieniać pętli foreach($arr_co_and_cu as $row) i struktury array.
Go to the top of the page
+Quote Post
nospor
post 22.05.2019, 10:55:58
Post #2





Grupa: Moderatorzy
Postów: 36 450
Pomógł: 6292
Dołączył: 27.12.2004




Zamien break 1 na break 2
A nastepnym razem do banalnego porownania uzywaj IF to nie bedziesz mial takich problemow

edit: chyba nie doczytalem calego twojego posta.
Uzyj poprostu IF ELSE
gdzie w IF bedzie tekst ze zatrzymano, a w ELSE ze nie zatrzymano. Nie wiem co sie naszlo na switch tutaj


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
.Wojtek
post 22.05.2019, 11:01:58
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


Masz zupełną rację, zakręciłem się. Dziękuję.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 13:27