Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nie działa instrukcja switch???
Forum PHP.pl > Forum > Gotowe rozwiązania
Citral
Witam, czy ktoś ma może pomysł dlaczego nie działa takie coś


[php:1:ea6e945c13]<?php

$koniec_wszystkiego = 0;
$czoiser = 15;

switch ($koniec_wszystkiego)
{
case $koniec_wszystkiego==$czoiser:
print '<A HREF="ksiega.php?page=next&l='.$koniec_wszystkiego.'" class="link">- N E X T -</A>';
break;
case $koniec_wszystkiego==0:
print '<A HREF="ksiega.php?page=prev&l='.$prev_lines.'" class="link">- P R E V -</A>';
break;
default:
print '<A HREF="ksiega.php?page=prev&l='.$prev_lines.'" class="link">- P R E V</A> - - - <A HREF="ksiega.php?page=next&l='.$koniec_wszystkiego.'" class="link">N E X T -</A>';
}
?>[/php:1:ea6e945c13]

mimo, że zmienne są różne to wykonywany jest kod z pierwszego wrunku gdy równe, na tomiast to działa bez problemu:

[php:1:ea6e945c13]<?php

$koniec_wszystkiego = 0;
$czoiser = 15;

if($koniec_wszystkiego==$czoiser)
{
print '<CENTER><FONT FACE="verdana" size="1"><A HREF="ksiega.php?page=next&l='.$koniec_wszystkiego.'" class="link">- N E X T -</A></FONT>';
****
}
elseif($koniec_wszystkiego==0)
{
print '<CENTER><FONT FACE="verdana" size="1"><A HREF="ksiega.php?page=prev&l='.$prev_lines.'" class="link">- P R E V -</A></FONT>';
}
else
{
print '<CENTER><FONT FACE="verdana" size="1"><A HREF="ksiega.php?page=prev&l='.$prev_lines.'" class="link">- P R E V</A> - - - <A HREF="ksiega.php?page=next&l='.$koniec_wszystkiego.'" class="link">N E X T -</A></FONT>';
}

?>[/php:1:ea6e945c13]

co ciekawe jeśli w miejscu zaznaczonym przeze mnie gwiadkami, wyświetlę zawartość obu zmiennych to są różne, nie wiem o co chodzi
Ive
po 'default:' nie ma 'break;'
i jeszcze nie tak wygląda konstrukcja switch
[php:1:a65ec6b6f2]<?php
switch($koniec_wszystkiego) {
case '0':
//bla
break;
case 'costam':
// bla
break;
}
?>[/php:1:a65ec6b6f2]
Citral
cóż... nie napisałem przy default brake'a bo w książce jest bez brake'a, tak samo z tymi apostrofami (gruby book php4 od podstaw helionu). w każdym bądź razie nadal nie działa... przy wartościach czoiser i koniec wszystkiego, które są sobie równe wchodzi do warunku default zamiast do równości

[php:1:b6809cbdbd]<?php
switch($koniec_wszystkiego) {
case '$koniec_wszystkiego==$czoiser':
{
print '<CENTER><FONT FACE="verdana" size="1"><A HREF="ksiega.php?page=next&l='.$koniec_wszystkiego.'" class="link">- N E X T -</A></FONT>';
break;
}
case '$koniec_wszystkiego==0':
{
print '<CENTER><FONT FACE="verdana" size="1"><A HREF="ksiega.php?page=prev&l='.$prev_lines.'" class="link">- P R E V -</A></FONT>';
break;
}
default:
{
print '<CENTER><FONT FACE="verdana" size="1"><A HREF="ksiega.php?page=prev&l='.$prev_lines.'" class="link">- P R E V</A> - - - <A HREF="ksiega.php?page=next&l='.$koniec_wszystkiego.'" class="link">N E X T -</A></FONT>';
break;
}
}
?>[/php:1:b6809cbdbd]

questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
BzikOS
Jakaś dziwna ta ksiązka :|

[php:1:70a504b525]<?php
switch($koniec_wszystkiego) {
case $czoiser:
{
//...
}
break;
case 0:
{
//...
break;
}
default:
{
//...
break;
}
}
?>[/php:1:70a504b525]
Citral
teraz jest ok, to tak troche nie kumam jak działa ta instrukcja switch. wychodzi na to, że działa jeśli jako case podam konkretną wartość oczekiwaną pod "przełączaną" zmienną, w takim razie dlaczego mogę używać warunku typu $zmienna > 0 a nie moge $zmienna == $inna zmienna ? w książce jest przykład z ocenami za punktację i jest

[php:1:26df2d7fd3]<?php
switch ($grade) {
case $grade>70:
echo "Dostałeś 6";
break;
case $grade>60:
echo "Dostałeś 5";
break;
.
.
.
case $grade>25:
echo "Dostałeś 2";
break;
default:
echo$ "Nie zdałeś;
?>[/php:1:26df2d7fd3]
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.