Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] do.. while w php 8 ?
Forum PHP.pl > Forum > Przedszkole
starterrrrr
Witam.

Dostosowuje skrypt do PHP 8.
Funkcja each() w php 8 jest już usunięta. Jak proponujecie przerobić poniższy kod na pasujący do php 8 ?

Pętla wykonuje kolejne iteracje w momencie gdy przekazana zmienna jest tablica.
  1.  
  2. do {
  3.  
  4. ...
  5.  
  6. } while (is_array($ilosc_lub_array) && list($klucz, $ilosc) = each($ilosc_lub_array));
  7.  
viking
Zamień na foreach. Ten do/while też pewnie zbędny. Do tego od 7.1 masz https://www.php.net/manual/en/migration71.n...y-destructuring
starterrrrr
Analizuje ten przypadek i problemem jest to, że raz dostaje tablice a raz zmienną.

Jak jest zmienna to ma się wykonać raz a jak jest tablica to ma przelecieć po elementach. Jakiś pomysł ja kto rozwiązac?

Kod z pętli wstawić w funkcje i dać warunek, jeżeli tablica to wykonuje petle jak nie to leci wykonanie funkcji?
viking
Z założenia metoda/funkcja powinna zwracać jednolity typ danych.
nospor
poprostu zrob tablice z tej zmiennej a ppotem foreach normalnie i po sprawie

  1. if (!is_array($ilosc_lub_array)) {
  2. $ilosc_lub_array = [$ilosc_lub_array];
  3. }
  4.  
  5. foreach ($ilosc_lub_array as $ilosc) {
  6. // tu twoj kod z while
  7. }
  8.  
starterrrrr
Cytat(nospor @ 6.09.2021, 11:35:58 ) *
poprostu zrob tablice z tej zmiennej a ppotem foreach normalnie i po sprawie

  1. if (!is_array($ilosc_lub_array)) {
  2. $ilosc_lub_array = [$ilosc_lub_array];
  3. }
  4.  
  5. foreach ($ilosc_lub_array as $ilosc) {
  6. // tu twoj kod z while
  7. }
  8.  


Pierwszy raz widzę taki zapis ohmy.gif
$ilosc_lub_array = [$ilosc_lub_array]; smile.gif

Wieczorem sprawdzę.
nospor
[cos] to skrocona wersja dla array(cos)

Mozesz nawet wywalic tego if od razu zrobic:
  1. $ilosc_lub_array = (array)$ilosc_lub_array; // tutaj rzutujesz na tablice. Jak cos jest nietablica, to bedzie. A jak cos jest tablica, to nic sie nie zmieni
  2.  
  3.  
  4. foreach ($ilosc_lub_array as $ilosc) {
  5. // tu twoj kod z while
  6. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.