Avatar billede bachovic Novice
06. juni 2017 - 08:17 Der er 12 kommentarer og
1 løsning

Lige og ulige uger

Hej,

Jeg er ny i php verdenen. Jeg ønsker en kode der skal skrive et bestemt nummer efter om det en lige eller ulige uge.

<?php
  $week = date("W");
  echo '';

    if($week&1
  ) {
    echo '3002';
  } else {
    echo '3004';
  }
?>   

Hivs det er en uge 1 = ulige uge skal den skrive 3002. Hvis det er en uge 2 = lige uge skal den skrive 3004.

Da vi er i en ulige uge nu (23) skal den altså skrive 3002

Jeg er dog ikke sikker på at min kode er korrekt. For hvis jeg skriver week&2 så gør den ingen forskel.

Kan i hjælpe?
Avatar billede Slater Ekspert
06. juni 2017 - 08:43 #1
Der skal være en forskel, hvis du i stedet for &1 skriver &2. Er du sikker på du opdaterede rigtigt osv? Umiddelbart ser det fint ud.
Avatar billede Slater Ekspert
06. juni 2017 - 08:46 #2
Forresten, dine if-sætninger caster til true/false fordi du ikke sammenligner med noget, så forskellen er måske ikke så stor som du tror, eftersom alt andet end 0 er det samme som 1, når det laves om til true/false i PHP. Men prøv f.eks. at sætte ugen til 13, når du har &2 stående - den bør blive opfattet som en lige uge, selvom den er ulige.

Så &1 er korrekt.
Avatar billede jakobdo Ekspert
06. juni 2017 - 08:52 #3
Du kan også overveje at bruge modulus.
Kender du modulus funktionen ?

http://php.net/manual/en/language.operators.arithmetic.php (modulo)
Avatar billede bachovic Novice
06. juni 2017 - 08:53 #4
Den tanke havde jeg også, for jeg mener bestemt i fredags da jeg legede med det at det umiddelbart virkede når jeg ændrede &1 til &2, men jeg ville så lige tjekke nu her om den rent faktisk ændrede noget efter uge skiftet og det synes jeg ikke den gør nu. Den ændre intet nu når jeg ændre til 2
Avatar billede acore Ekspert
06. juni 2017 - 08:55 #5
Ellers - lidt lettere læst:

<?php
$week = date("W");
$oddweek = $week%2;
echo($oddweek? '3002': '3004');
?>
Avatar billede bachovic Novice
06. juni 2017 - 08:57 #6
Hej Jakobdo,
Nej det kender jeg desværre ikke endnu.
Jeg håber lidt at jeg nemt kan skrive en tekst som kan skifte alt efter om det er en lige eller ulige uge.
Avatar billede bachovic Novice
06. juni 2017 - 09:00 #7
Hej Acore,

Det ligner umiddelbart hvad jeg søger.
kan jeg så være sikker på at den søndag midnat skifter af sig selv? når vi kommer i en lige uge?
Avatar billede Slater Ekspert
06. juni 2017 - 09:03 #8
bachovic:
Du kan bare skifte ugen selv for at teste. I stedet for at sætte $week til date('W'), så sæt den til et vilkårligt tal, f.eks. $week = 24;

- Men ja, det vil virke. Men det skal &1 så også.
Avatar billede jakobdo Ekspert
06. juni 2017 - 09:08 #9
<?php
$week = date("W");
if(($week % 2) == 0){
  // Lige uge
  echo '3002';
} else {
  // Ulige uge
  echo '3004';
}
?>
Avatar billede Slater Ekspert
06. juni 2017 - 09:19 #10
Jeg forstår dog ikke helt denne fascination med at ændre bitwise til modulus. Det bør ikke gøre en tøddel forskel om der står &1 eller %2, og at fokusere på denne ligegyldige ændring ignorerer bare det oprindelige problem.
Avatar billede acore Ekspert
06. juni 2017 - 09:48 #11
Slater: I princippet enig.

Men %2 er lidt mindre maskin-nært og lidt lettere læst for de fleste. Derfor forslaget.
Avatar billede acore Ekspert
06. juni 2017 - 09:48 #12
bachovic i #7: ja, du kan være helt sikker på det.
Avatar billede jakobdo Ekspert
06. juni 2017 - 12:46 #13
Jeg har aldrig fattet bitwise, derfor. :)
Men ja, det efterfølgende kode er det "samme" ja.
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

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



IT-JOB