Avatar billede webweaver Praktikant
19. juli 2010 - 20:04 Der er 9 kommentarer og
1 løsning

Problem med array

Hej folkens.

Sidder og bikser lidt med noget som burde være forholdsvis simpelt. Kan dog ikke få det til at virke som ønsket, uden at jeg egentlig ved hvorfor. Så håber I da kan hjælpe lidt på vej.

$timeNow = date("H");
   
$godmorgen = array("04, 05, 06, 07, 08, 09");
$godformiddag = array("10, 11");
$godeftermiddag = array("12, 13, 14, 15, 16, 17");
$godaften = array("18, 19, 20, 21, 22, 23, 00, 01, 02, 03");
       
if (in_array($timeNow, $godmorgen)) {
   
  $whattime = "Godmorgen";
       
}
   
if (in_array($timeNow, $godformiddag)) {
   
  $whattime = "God formiddag";
       
}
   
if (in_array($timeNow, $godeftermiddag)) {
   
  $whattime = "God eftermiddag";
       
}
   
if (in_array($timeNow, $godaften)) {
   
  $whattime = "Godaften";
       
}

Problemet er at $whattime variablen ikke bliver sat i nogle af forespørgslerne. Hvordan kan det være?

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede Slettet bruger
19. juli 2010 - 20:20 #1
$godmorgen = array("04, 05, 06, 07, 08, 09"); - En streng :P

Men brug hellere en anden konstruktion - det være sig nogle less-than/greater-than if's eller en switch.
Avatar billede Slettet bruger
19. juli 2010 - 20:27 #2
F.eks.:

<?php
$timeNow = date("G");
 
$godmorgen = array("04, 05, 06, 07, 08, 09");
$godformiddag = array("10, 11");
$godeftermiddag = array("12, 13, 14, 15, 16, 17");
$godaften = array("18, 19, 20, 21, 22, 23, 00, 01, 02, 03");

switch($timeNow) {
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:        $whattime = "Godmorgen";
                break;
    case 10:
    case 11:    whattime = "God formiddag";
                break;
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:    $whattime = "God eftermiddag";
                break;
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 0:
    case 1:
    case 2:
    case 3:        $whattime = "Godaften";
                break;
    default:    $whattime = "";
   
}

echo $whattime;
?>
Avatar billede webweaver Praktikant
19. juli 2010 - 20:57 #3
Synes bare det er mystisk, for bruger metoden andre steder, til andre ting, hvor det virker ganske fint.

Den første måde jeg lavede det på, var netop med noget less-than/greater-than, og det virkede kun tildels, så derfor gik jeg væk fra det igen, og over til denne metode.

Men det ser ud til at switch funktionen virker som den skal.
Udover der lige manglede en $ et enkelt sted, men det kunne jeg godt selv klare at rette op på :P

Men tak for hjælpen, så har jeg da det at arbejde ud fra.

Smid et svar ...

Mvh. Lasse Jensen
Avatar billede erikjacobsen Ekspert
19. juli 2010 - 21:09 #4
Hvis du vil bruge din oprindelige idé:

<?php

$timeNow = date("H");
 
$godmorgen = array(4, 5, 6, 7, 8, 9);
$godformiddag = array(10, 11);
$godeftermiddag = array(12, 13, 14, 15, 16, 17);
$godaften = array(18, 19, 20, 21, 22, 23, 0, 1, 2, 3);
     
if (in_array($timeNow, $godmorgen)) {
 
  $whattime = "Godmorgen";
     
}
 
if (in_array($timeNow, $godformiddag)) {
 
  $whattime = "God formiddag";
     
}
 
if (in_array($timeNow, $godeftermiddag)) {
 
  $whattime = "God eftermiddag";
     
}
 
if (in_array($timeNow, $godaften)) {
 
  $whattime = "Godaften";
     
}

print $whattime;

?>
Avatar billede Slettet bruger
19. juli 2010 - 21:22 #5
Svar her :)

#4 - Nemli'
Avatar billede webweaver Praktikant
19. juli 2010 - 22:35 #6
Okay der kan man bare se erikjacobsen. Den eneste forskel er at du bruger print(); og jeg benyttede mig af echo();. Det gør så en forskel i den her situation åbentbart. Det er vel fordi at print(); returnerer en true or false værdi?

Det havde da været noget nemmere bare at have skrevet det kimsey0, hvis du var klar over det. En hel del nemmere, end at begynde at programmere nye pieces. Men vigtigst er naturligvis bare at det fungerer :)

Tak til begge.
Avatar billede Slettet bruger
19. juli 2010 - 22:48 #7
erikjacobsen erstattede ikke bare echo med print (det var sådan set ligegyldigt), han fjernede de to gåseøjne rundt om elementerne i dine arrays - så de ikke længere var en streng - hvilket også var hvad jeg fremhævede, selvom jeg ville lade dig tænke selv.
Avatar billede ksoren Nybegynder
20. juli 2010 - 01:22 #8
erik gjorde faktisk mere end det, hvis man lige kigger efter. Han forstår det der med talsystemer :)
Avatar billede Slettet bruger
20. juli 2010 - 01:39 #9
At 04 == 4 - Ja :)
Avatar billede ksoren Nybegynder
20. juli 2010 - 01:55 #10
Ja, 04 er lig 4, men hvorfor?

Hvad med 08 og 09? :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester