Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP] Problem zatrzymaniem pętli switch-em z klucza array

Napisany przez: .Wojtek 22.05.2019, 10:31:36

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. http://www.php.net/array(
  3. 0 => http://www.php.net/array (0 => '2','Id' => '2',1 => '0','On_Off' => '0'),
  4. 1 => http://www.php.net/array (0 => '3','Id' => '3',1 => '1','On_Off' => '1'),
  5. );
  6. http://www.php.net/var_dump($arr_co_and_cu);
  7.  
  8. $i = 0;
  9. foreach($arr_co_and_cu as $row) {
  10. ++$i;
  11. switch ($row['On_Off']) {
  12. case '0':
  13. http://www.php.net/echo "zatrzymano dalsze wykonywanie pętli nr $i, ponieważ 'On_Off' = ".$row['On_Off']." <br>";
  14. break 1; /* Exit only the switch. */
  15. }
  16. http://www.php.net/echo "nie zatrzymano pętli nr $i, ponieważ 'On_Off' = ".$row['On_Off']."<br>";
  17. }

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.

Napisany przez: nospor 22.05.2019, 10:55:58

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

Napisany przez: .Wojtek 22.05.2019, 11:01:58

Masz zupełną rację, zakręciłem się. Dziękuję.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)