Archiv verlassen und diese Seite im Standarddesign anzeigen : while( list() = each()) konstruktion in php- frage
(del)
2005-01-20, 19:23:11
Habe gerade folgenden codeschnipsel vor mir, bin php- fast-noch-newbie und kapiere nicht wieso das, bzw. wie es funktioniert. die while schleife erwartet doch normalerweise eine bedingung. z.b. while ($a<$b){} und wenn die bedingung true ist, wird weitergearbeitet. aber hier ist keine bedingung gegeben, sondern die aufforderung den array $fruit in $key und $val aufzusplitten. kann mir jemand erklären, warum die while schleife funktioniert, bzw. irgendwann aufhört? ist eine anweisung boolean? was wird hier auf den wahrheitsgehalt geprüft?
thanks
bazooka
<?php
$fruit = array('a' => 'Apfel', 'b' => 'Banane', 'c' => 'Preiselbeere');
reset ($fruit);
while (list ($key, $val) = each ($fruit)) {
echo "$key => $val\n";
}
/* Ausgabe:
a => Apfel
b => Banane
c => Preiselbeere
*/
?>
Gnafoo
2005-01-20, 19:26:20
Ich weiß nicht genau, wie es bei php ist, aber bei c/c++ ist jede Zahl ungleich 0 true. D.h. wenn man folgendes macht:
if( a = 5 )
{
// ...
}
Dann ist das Ergebnis von a=5 ebenfalls 5 und damit wahr. Also wird der Code ausgeführt. Ich denke mal in PHP ist das ähnlich.
cu DerTod
(del)
2005-01-20, 20:04:04
... wenn deine vermutung stimmt, dann müsste ich doch theoretisch eine endlosschleife programmiert haben, weil der ausdruck while (list ($key, $val) = each ($fruit)) immer true wäre oder ?
MadMan2k
2005-01-20, 21:50:58
die Schleife hört auf, wenn each am ende des Arrays false zurückgibt.
Dein Konstrukt stellt sozusagen die foreach Schleife dar.
(del)
2005-01-21, 07:40:28
ach so, jetz hab ichs kapiert. wenn der array-zeiger auf ein array verweist, gibt each nen fehler aus :idea:
thanks
The_Invisible
2005-01-22, 21:04:37
nicht vergessen das each() den zeiger im array um eins vorrückt... einmal kann list() keine variablen mehr zuweisen und ist somit false ;)
für solche sachen würde ich aber sowieso foreach() verwenden da schneller
mfg
(del)
2005-01-22, 22:35:09
hab ich auch grad in meiner php referenz gelesen von php.net
ich arbeit grade so ein Ich-lerne-php buch durch und die wussten anscheinend nicht, dass es so etwas schönes wie die foreach schleife gibt :biggrin:
The_Invisible
2005-01-25, 15:14:34
hab ich auch grad in meiner php referenz gelesen von php.net
ich arbeit grade so ein Ich-lerne-php buch durch und die wussten anscheinend nicht, dass es so etwas schönes wie die foreach schleife gibt :biggrin:
gibts ja "erst" seit php4
will man also zu php3 kompatibel sein bleibt einem nix anderes übrig
mfg
(del)
2005-01-25, 21:52:57
alles klar :D
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.