Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: foreach i nieprawidlowe odczytywanie wartosci
Forum PHP.pl > Forum > PHP
Seth
Ostatnio natrafilem na pewny blad (?) dzialania foreach. Nie jestem pewien czy mozna go zaliczyc do bledow czy tez jest to zalozeniem tej petli. Dotychczas zupelnie tego nie zauwazalem ale podczas wypisywania przez foreach elementow tablicy, nie nastepuje to zgodnie z indexami, tylko zgodnie z kolejnoscia wpisania do tablicy danych.

Przyklad:
[php:1:658baaf040]<?php
$arrTest[0] = 'index 0';
$arrTest[1] = 'index 1';
$arrTest[3] = 'index 3';
$arrTest[2] = 'index 2';


foreach( $arrTest as $var ){
echo $var.'<br>';
}
?>[/php:1:658baaf040]

Wynik:
Cytat
index 0
index 1
index 3
index 2


Czy wynikiem nie powinno byc:
Cytat
index 0
index 1
index 2
index 3

:?:
Jabol
to jest przecież oczywiste. php traktuje tablice jako stos. Zauważ, że możesz używać dowolnych indeksów, czyż nie. Więc bardzo trudno byłoby sprawdzić typ tablicy (które w php przypomne są bardzo "swawolne"). Jeżeli chcesz mieć to po kolei to musisz użyć sort() lub któremuś z jej potomnych!
Seth
OK dzieki. Wydawalo mi sie, ze foreach automatycznie sortuje dane i wyswietla je zgodnie z indexem.
scanner
Zgadza się. To jest jesli się nie mylę model FI-FO i przyznam się, że jeśli chodzi o foreach() takie jego zachowanie jest u mnie w głowie ustawione na default smile.gif Nie pamiętam jak to jest w innych językach z którymi pracowałem (w zamierzchłej przeszłości szkolnej).
Dodatkowo "na logikę" biorąc nie wydaje mi się, żeby foreach() powinno działać inaczej.
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-2025 Invision Power Services, Inc.