• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dziwna sprawa ze switchem i datą

Mały hosting, OGROMNE możliwości
0 głosów
756 wizyt
pytanie zadane 8 sierpnia 2015 w PHP przez CzlowiekSkrypt Nałogowiec (26,340 p.)
edycja 8 sierpnia 2015 przez CzlowiekSkrypt

Mam switcha który na podstawie danego miesiąca wyświetla określony obrazek: 

 

$month = date("m");

switch($month){
	case 01: echo "<img src=images/skymap/styczen.jpg />";
	break;

// i tak dalej aż do 12

Wskoczyło 08 i skrypt się wysypał, switch sobie przelatuje po 08 i nic z tego nie robi chociaż $month zwraca nam string(2) "08".
Poprawiłem wszystko, zamiast case xx zrobiłem case 'xx' no i teraz zadziałało, ale ciekawi mnie dlaczego wysypało się przy tej ósemce ?!  Wiem że różniły się typy danych i to był błąd ale wcześniej to skryptowi nie przeszkadzało :) 

W hard testingu wink wyszło że dla "09" też nie działa.

4 odpowiedzi

+1 głos
odpowiedź 8 sierpnia 2015 przez Comandeer Guru (607,960 p.)
Radzę zapoznać się z tzw. literałami oktalnymi, bo właśnie tym są liczby z 0 na początku
komentarz 8 sierpnia 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
Czyli konflikt na tle binarnym :)
0 głosów
odpowiedź 8 sierpnia 2015 przez Magicone Nałogowiec (45,100 p.)
<?php
	echo '<img src="images/skymap/';

	switch(date('m')){
		case '01': echo 'styczen.jpg'; break;
		case '02': echo 'luty.jpg'; break;
		case '03': echo 'marzec.jpg'; break;
		case '04': echo 'kwiecien.jpg'; break;
		case '05': echo 'maj.jpg'; break;
		case '06': echo 'czerwiec.jpg'; break;
		case '07': echo 'lipiec.jpg'; break;
		case '08': echo 'sierpien.jpg'; break;
		case '09': echo 'wrzesien.jpg'; break;
		case '10': echo 'pazdziernik.jpg'; break;
		case '11': echo 'listopad.jpg'; break;
		case '12': echo 'grudzien.jpg'; break;
	}

	echo '"/>';
?>

 

0 głosów
odpowiedź 8 sierpnia 2015 przez Vodoo Dyskutant (9,270 p.)
Próbowałeś bez 0 (samo 9)? Na stronie rzeczywiście jest informacja, że zwraca liczbę z zerem, ("Liczbowa forma miesiąca, z zerami wiodącymi 01 aż do 12"), ale według mnie nie ma takiej liczby jak 01, 02 itp. Dlatego mogło wskoczyć kiedy użyłeś '09'. Oczywiście mogę się mylić, więc nie bierz tego dosłownie.
–1 głos
odpowiedź 8 sierpnia 2015 przez roque Bywalec (2,160 p.)
A może działa tylko obrazek dla 09 nie istnieje?

Podobne pytania

0 głosów
1 odpowiedź 430 wizyt
pytanie zadane 20 października 2019 w C i C++ przez rel Początkujący (340 p.)
0 głosów
1 odpowiedź 832 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez Ziuziek Mądrala (5,140 p.)
0 głosów
1 odpowiedź 419 wizyt
pytanie zadane 23 listopada 2019 w C i C++ przez Hardwell Dyskutant (9,060 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,261 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...