php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.04.2005, 11:56  
Erfahrener Benutzer
 
Registriert seit: 14.04.2005
Beiträge: 1.004
search
Standard

weil du immer eins (1) weg zählst und die bedingungen in der while auf ein 0 warten das aber bei != (ist ungleich) niemals der fall sein kann ....

... search

*edit
aua
mein posting beweist mal wieder dass man vor dem 3ten kaffee einfach gepflegt die sonntagsruhe genießen sollte
search ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.04.2005, 11:58  
Gast
 
Beiträge: n/a
Standard

1. Durchlauf
$i = 5 -> $i != 0
$h = 6 -> $h != 0


2. Durchlauf
$i = 4 -> $i != 0
$h = 5 -> $h != 0


3. Durchlauf
$i = 3 -> $i != 0
$h = 4 -> $h != 0


4. Durchlauf
$i = 2 -> $i != 0
$h = 3 -> $h != 0


5. Durchlauf
$i = 1 -> $i != 0
$h = 2 -> $h != 0


6. Durchlauf
$i = 0 -> $i != 0
$h = 1 -> $h != 0

7. Durchlauf
$i = -1 -> $i != 0
$h = 0 -> $h != 0

8. Durchlauf
$i = -2 -> $i != 0
$h = -1 -> $h != 0


Die Schleife von tarlar kann garnicht anders, als endlos laufen.

Gruß
phpfan
 
Alt 24.04.2005, 11:59  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Natürlich geht auch "!=".

Guck mal hier:
http://www.php.net/manual/de/languag...ors.precedence

Da siehst Du die Rangfolge von Operatoren.

Wenn Du sowas hier machen willst
if (a != 0 OR b != 0), dann wird das wie folgt ausgewertet:
if ( (a != 0) OR (b != 0)), weil "!=" stärker bindet als OR.
Nimmst Du aber if (a != 0 || b != 0), so schnappt die Falle zu und es wird das da draus:
if (a != (0 || b) != 0)
Das ist nicht unbedingt das, was man sich mit so einem Ausdruck wünscht.
Ob das jetzt einen Fehler produziert oder zu a != b != 0, also a != (b != 0) oder zu a == !b wird, weiß ich jetzt nicht. Ist eh nichts brauchbares.

Wenn man es richtig machen will, klammert man einfach richtig und schon klappt es mit allen Operatoren.
=> if ((a!=0) || (b!=0))


Edit:
Dass das Ergebnis (eines ist immer ungleich 0) nicht ungedingt gewünscht ist, ist klar. Es ging eher darum, was in einer Bedingung erlaubt ist oder nicht.
Der_Gerhard ist offline  
Alt 24.04.2005, 13:41  
Gast
 
Beiträge: n/a
Standard

ja aber wart doch mal search die bedingung heisst ja


$h != 0 || $i != 0


6. Durchlauf
$i = 0 -> $i != 0
$h = 1 -> $h != 0

7. Durchlauf
$i = -1 -> $i != 0
$h = 0 -> $h != 0

das müsste doch heissen das er beim Durchlauf 6 schon rausgeht, weil da schon

$i == 0 ist

somit while($i != 0 or $h != 0) $i -> bedingung erfüllt
 
Alt 24.04.2005, 13:48  
Gast
 
Beiträge: n/a
Standard

Nein, da steht "or"

Übersetzt steht da

Mache solange, wie $i != 0 oder $h != 0

Da immer eine Variable != 0 ist, ist das eine Endlosschleife. Statt or ein and, dann geht es.

Gruß
phpfan
 
Alt 24.04.2005, 13:56  
Gast
 
Beiträge: n/a
Standard

jo hat sich dann erledigt.

dachte er bricht ab sobald eines davon == 0 ist

thx
 
Alt 24.04.2005, 19:20  
Gast
 
Beiträge: n/a
Standard

Huhu,
Zitat:
Zitat von Der_Gerhard
Was meinst Du mit "steht im Weg"? Geht doch außen rum.

Bei ungeeigneter Operator-Rangfolge muss man halt Klammern reinbauen.
In dem Bsp. kannst Du klammern bis die Finger bluten, da ändert sich nix. Ist doch nur ein "Operator" da.

Es gibt aber einen entscheidenden Unterschied zwischen "!=" und ">"...
Zitat:
Nimmst Du aber if (a != 0 || b != 0), so schnappt die Falle zu und es wird das da draus:
if (a != (0 || b) != 0)


Du hast natürlich Recht, man sollte sich der "Bindigkeit" bewußt sein.
Bsp.:
PHP-Code:
$i 5
$h 6

$j 2;

while (
$i || $h && $j 0) { 
    echo 
$i--; 
    echo 
' - '
    echo 
$h--; 
    echo 
' - '
    echo 
$j--;
    echo 
'
'



echo 
'<hr>';

$i 5
$h 6

$j 2;

while (
$i || $h AND $j 0) { 
    echo 
$i--; 
    echo 
' - '
    echo 
$h--; 
    echo 
' - '
    echo 
$j--;
    echo 
'
'


 
Alt 24.04.2005, 20:09  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Ihr habt offensichtlich zu viel Sonne abgekriegt! Und das im April!
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
While schleife -> letzter durchgang Skazi PHP Tipps 2006 7 16.09.2006 00:11
Problem mit while schleife obi PHP Tipps 2006 6 31.08.2006 13:40
mysql_query verschmelzen zweier abfragen (while schleife) Buschdieb PHP Tipps 2006 10 15.07.2006 17:11
while schleife - spezial datensatz einblenden Buschdieb PHP Tipps 2006 2 09.04.2006 13:05
while Schleife gibt nicht alle Daten aus PHP Tipps 2006 2 12.01.2006 19:24
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
While Schleife Beatbox Off-Topic Diskussionen 8 19.05.2005 21:55
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
Variabel aus while schleife ausserhalb der schleife nutzen PHP Tipps 2005 8 12.02.2005 18:04
resultausgabe mit while schleife in pdf dokument PHP Tipps 2004 2 23.09.2004 14:56
Nach while Schleife funzt nix mehr?! PHP Tipps 2004 15 25.08.2004 00:25
[Erledigt] probleme mit ner while schleife PHP Tipps 2004 5 23.07.2004 17:28
Prob mit While schleife JEGO PHP Tipps 2004 2 04.06.2004 12:01


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.