• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP tabele a licznik pętli

Object Storage Arubacloud
0 głosów
117 wizyt
pytanie zadane 28 września 2020 w PHP przez vingilot85 Obywatel (1,150 p.)

Witam,

mam taki kod:

<?php
$klient=[];
$klienci=[];

$klient['imie']="Piotr";
$klient['nazwisko']='Najsztub';
$klient['auto']='Chewrolet';
$klient['winien']=0;

array_push($klienci, $klient);

$klient['imie']='Tomasz';
$klient['nazwisko']='Hajto';
$klient['auto']='Chrystler';
$klient['winien']=0;

array_push($klienci,$klient);

$klient['imie']='Robert';
$klient['nazwisko']='Frog';
$klient['auto']='BMW';
$klient['winien']=25;

array_push($klienci, $klient);

print_r($klienci);

echo "Najniebezpieczniejszym klientem jest: ".$klienci[1]['nazwisko'].PHP_EOL;
echo PHP_EOL;

$e=count($klienci);

for($i=0; $i<$e; $i++)
{
    printf("%s\t%s\t%s \n",
        $klienci[$i]['imie'],
        $klienci[$i]['nazwisko'],
        $klienci[$i]['winien']
        );
}
?>

W linii 35, w pętli for wydrukowanie pożądanej treści działa tylko przy zastosowaniu $i<$e.

I tu pytanie - dlaczego program sypie się, podczas zastosowania warunku $i<=$e? Wg mojej logiki powinno to działać właśnie dopiero wtedy - kiedy jest warunek spełniony DO ilości spełnionej w $e, a nie mniejszej.

2 odpowiedzi

+1 głos
odpowiedź 28 września 2020 przez Bosswell Nałogowiec (36,470 p.)
Tablica składa się z 3 elementów. Dlatego $e = 3. W PHP iterujemy od 0. W momencie kiedy masz warunek <= 3, to wtedy odwołujesz się do offsetu 3, który nie istnieje.
komentarz 28 września 2020 przez vingilot85 Obywatel (1,150 p.)
No niby tak. Ale chodzi o to, że daję <= licznik w zdefiniowany w $e. A $e samo oblicza ile jest zajść. Stąd moje pytanie, dlaczego musi być MNIEJSZE a nie MNIEJSZE LUB RÓWNE
komentarz 28 września 2020 przez vingilot85 Obywatel (1,150 p.)
Chyba, że chodzi o to, że count liczy od 1, nie od 0
komentarz 28 września 2020 przez vingilot85 Obywatel (1,150 p.)
Ok, już rozumiem. Dzięki za pomoc:)
+1 głos
odpowiedź 28 września 2020 przez VBService Ekspert (253,140 p.)
edycja 28 września 2020 przez VBService

$e=count($klienci); w przypadku tej tablicy zwróci wartość 3, bo są trzy wpisy (elementy), ale iteracja w przypadku tablic w php-ie odbywa się od 0 (zera)

$i => 0 - count => 1
$i => 1 - count => 2
$i => 2 - count => 3

przy $i<=$e, pętla "wychodzi" poza zakres tej tablicy

$i => 3 - co by odpowiadało już count => 4

można i tak, ale nie powinno się tego stosować

$e=count($klienci) - 1;
 
for($i=0; $i<=$e; $i++)
{
    printf("%s\t%s\t%s \n",
        $klienci[$i]['imie'],
        $klienci[$i]['nazwisko'],
        $klienci[$i]['winien']
        );
}

Można bez count

echo "<pre>";
echo "Najniebezpieczniejszym klientem jest: ".$klienci[1]['nazwisko'].PHP_EOL;
echo PHP_EOL;
 
foreach($klienci as $klient)
{
    printf("%s\t%s\t%s \n",
        $klient['imie'],
        $klient['nazwisko'],
        $klient['winien']
        );
}

echo "</pre>";
?>

 

1
komentarz 28 września 2020 przez vingilot85 Obywatel (1,150 p.)
Teraz rozumiem, dzięki!

Podobne pytania

0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 31 sierpnia 2017 w PHP przez zenon209210 Początkujący (260 p.)
0 głosów
2 odpowiedzi 377 wizyt
pytanie zadane 3 maja 2016 w C i C++ przez RycerzAndromedy Użytkownik (670 p.)
0 głosów
2 odpowiedzi 142 wizyt
pytanie zadane 13 kwietnia 2023 w SQL, bazy danych przez Mati336 Użytkownik (560 p.)

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...