03. november 2005 - 20:10
Der er
12 kommentarer og 1 løsning
if sætning inde i en switch
Jeg har denne switch: swtich ($test) { case "test": if(is_array($output) == true) $page = "ShowAlbum"; else $page = "output"; break; } $output kan enten være et array eller en string... men den giver mig hele tiden at $page er output selvom det er et array, hvor det...
Annonceindlæg fra Lector
03. november 2005 - 20:15
#1
switch og IKKE swtich Går ud fra du har mere i din switch?
03. november 2005 - 20:18
#2
Det virker fint nok <?php $test = "test"; $output = array(); switch ($test) { case "test": if(is_array($output)) $page = "ShowAlbum"; else $page = "output"; break; default: $page = "Bare en test"; } echo $page; ?>
03. november 2005 - 20:20
#3
En mere kompakt variant: switch ($test) { case "test": $page = (is_array($output)) ? "ShowAlbum" : "output"; break; }
03. november 2005 - 20:20
#4
her er hele min switch: switch ($mode) { case "addalbum" : $client = new Client(); $album = $_POST["album"]; $artist = $_POST["artist"]; $songtitle = $_POST['song']; $time = $_POST['time']; $i = 0; $songs = array(); foreach ($songtitle as $song) { if(!empty($song)) { $songs[] = array('songtitle' => $song,'track' => $i+1, 'time' => str_replace(",",".",$time[$i])); $i++; } } $output = $client->addAlbum($artist, $album, $songs, $_SESSION['sid']); $page = "output"; break; case "adduser": $client = new Client(); $Username = $_POST["username"]; $Password = $_POST["password"]; $output = $client->addUser($Username, $Password); $page = "output"; break; case "deleteuser": $client = new Client(); $Username = $_POST["username"]; $Password = $_POST["password"]; $output = $client->deleteUser($Username, $Password); $page = "output"; break; case "log": $client = new Client(); $Username = $_POST["Username"]; $Password = $_POST["Password"]; $Date = $_POST["Date"]; $output = $client->showLog($Date, $Username, $Password); $page = "logshow"; break; case "search": $client = new Client(); $searchStr = $_POST['textfield']; $sc = $_POST['sc']; if($sc == "Album" || $sc == "Song" || $sc == "Artist") { $output = $client->searchAlbum($searchStr, $sc); $page = "searchResult"; } else { $output = $client->showAlbumInfo($searchStr); if(is_array($output) == true) $page = "ShowAlbum"; else $page = "output"; } break; }
03. november 2005 - 20:24
#5
og det er case "search" den er gal med...
03. november 2005 - 20:24
#6
client() er en klasse der kommunikere med en webservice
03. november 2005 - 20:30
#7
Hvorfor mener du at fejlen har noget at gøre med at den er inde i en switch? Prøv i øvrigt: if (is_array($output) === true) $page = "ShowAlbum"; else $page = "output"; - eller: if (is_array($output)) $page = "ShowAlbum"; else $page = "output"; - eller: $page = (is_array($output)) ? "ShowAlbum" : $page = "output";
03. november 2005 - 20:38
#8
tester det lige....
03. november 2005 - 23:25
#9
Så har jeg testede det.. og det virker heller ikke når det kører uden switch Men hvis jeg bare skriver print_r($output), så kan den sagtens vise arrayet, selvom is_array fortæller mig det ikke er et array.. hvorfor det... F.eks. når jeg bruger print_r, giver den mig: stdClass Object ( [Album_name] => No1 [Artist_name] => kanon [Songs] => Array ( [0] => stdClass Object ( [songtitle] => test [track] => 1 [time] => 4 ) [1] => stdClass Object ( [songtitle] => Ole [track] => 2 [time] => 8 ) ) ) men is_array siger stadig at det ikke er et array, hvorfor det...
04. november 2005 - 10:37
#10
<ole> Jamen, den skriver jo til dig, hvad du gør galt ... hvis du altså kikker på det, du får returneret: stdClass Object ( ..... if (is_object($output)) ;o) /mvh </bole>
04. november 2005 - 16:46
#11
olebole Fantastisk.. Det der fangede mig var var at jeg jo traveseret det igennem som et array.. og så tænkte jeg jeg skulle tjekke for et array.. men smid et svar
04. november 2005 - 17:06
#12
- kein hokus pokus ;o)
04. november 2005 - 17:13
#13
takker ;o)
Vi tilbyder markedets bedste kurser inden for webudvikling