PDA

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