Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Banalny błąd
Forum PHP.pl > Forum > Przedszkole
milki135
Witam!

Dzisiaj pisząc skrypt napotkałem na pewien błąd.

Dlaczego:
  1. <?php
  2.  
  3. $a1="tik";
  4. $b1="tik";
  5.  
  6. $a2="tak";
  7. $b2="tak";
  8.  
  9. $nr = 1;
  10.  
  11. if ($nr = 1) { $a = $a1; $b = $b1;}
  12. if ($nr = 2) { $a = $a2; $b = $b2;}
  13.  
  14. echo "$a <br>";
  15. echo "$b <br>";
  16. echo "$nr <br>";
  17.  
  18. ?>


zawsze daje wynik "tak tak 2" skoro $nr ustalony jest na 1 ?

Będę wdzięczny za odpowiedź.
SmokAnalog
Operatory porównania w PHP to == i ===. Pojedynczy = to operator przypisania. Instrukcja:
  1. if($a = $b)

sprawdza wartość $a po przypisaniu, czyli fałsz dla false, 0, 0.0 itp. oraz prawdę w pozostałych przypadkach.
!*!
Ponieważ nie porównujesz w warunku, a ustawiasz.
djgarsi
  1. <?php
  2.  
  3. $a1="tik";
  4. $b1="tik";
  5.  
  6. $a2="tak";
  7. $b2="tak";
  8.  
  9. $nr = 1;
  10.  
  11. if ($nr == 1)
  12. {
  13. $a = $a1;
  14. $b = $b1;
  15. }
  16. if ($nr == 2)
  17. {
  18. $a = $a2;
  19. $b = $b2;
  20. }
  21.  
  22. echo $a."<br>";
  23. echo $b."<br>";
  24. echo $nr;
  25.  
  26. ?>


Tak powinno być.
Pamiętaj też o estetyce kodu. Przy dużych projektach będzie bardzo pomocne.
milki135
Dzięki wszystkim bardzo za pomoc. Czułem, że to banalny błąd, ale nie spodziewałem sie tak szybkich odpowiedzi. Pozdrawiam wink.gif .
!*!
Jeszcze jedna rzecz.

  1. $a1="tik";
  2. $a1='tik';


Jest różnica między apostrofem a cudzysłowem. Dla samego tekstu używaj apostrofu, parser wtedy nie dokonuje dodatkowych działań.
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.