Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dlaczego php interpretuje to na dwa różne sposoby?, ten sam kod, ten sam serwer, dwie interpretacje
Arek00
post
Post #1





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

Ostrzeżenie: (0%)
-----


mam taki kod:

  1. <?php
  2.    $cena = "185,48 PLN (zawiera 22 % VAT)";
  3.    $cena = substr($cena, 0, strpos($cena, 'PLN'));
  4.    $cena = str_replace(' ', '', $cena);
  5.    $cena = str_replace(',', '.', $cena);
  6.  
  7. if ($cena >= 100) {
  8.     echo "cena powyżej 100";
  9. } else {
  10.     echo "cena poniżej 100";
  11. }
  12.  
  13. ?>


na tym samym serwerze (home.pl) raz dostaję wynik "powyżej 100" a raz "poniżej 100". w tym drugim przypadku wydaje mi się że php nie traktuje zmiennej $cena jako liczby. próbowałem już różnych rzeczy, np.

  1. <?php
  2. <php
  3. $cena2 = 0.00;
  4. $cena2 = (float)$cena;
  5. ?>

efekt: zawartość $cena2 to "0" (zero)

może ktoś wie o co tu chodzi?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
kwiateusz
post
Post #2


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




ta sama wersja php? bo u mnie na php5.2.5 działa ok btw mozna tak

  1. <?php
  2. $cena = "185,48 PLN (zawiera 22 % VAT)";
  3. $cena = str_replace(',', '.', $cena);
  4. $cena = floatval($cena);
  5.  
  6. if ($cena >= 100) {
  7.    echo "cena powyżej 100";
  8. } else {
  9.    echo "cena poniżej 100";
  10. }
  11. ?>
Go to the top of the page
+Quote Post
Arek00
post
Post #3





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

Ostrzeżenie: (0%)
-----


najpierw było php w wersji 5.2.6, teraz zmieniłem na 4.4.6 i to samo. efekt Twojego kodu jest taki sam jak mój: "0". sprawdziłem też:

  1. <?php
  2. settype($cena, "float");
  3. ?>


i też w wyniku dostaję "0"


nowe odkrycie:
utworzyłem nowy katalog w tej domenie i wstawiłem ten kod do nowego pliku (tylko ten kod) i okazało się że działa poprawnie ale jak go wstawiam do jednego z plików na których działa strona to nie chce to działać...

Ten post edytował Arek00 4.10.2008, 19:28:26
Go to the top of the page
+Quote Post
kwiateusz
post
Post #4


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




  1. <?php
  2. $cena2 = 0.00;
  3.  
  4. printf('%.2f',$cena2)
  5. ?>


smile.gif
Go to the top of the page
+Quote Post
Arek00
post
Post #5





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

Ostrzeżenie: (0%)
-----


a możesz mi powiedzieć co ma mi dać ten ostatni kod?

z mojego kodu zmienna $cena ma wartość "185.48" i gdy następne linijki są takie:
  1. <?php
  2. if ($cena >= 100) {
  3.    echo "cena powyżej 100";
  4. } else {
  5.    echo "cena poniżej 100";
  6. }
  7. ?>


zawsze w wyniku dostaję "cena poniżej 100"
Go to the top of the page
+Quote Post
melkorm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


  1. <?php
  2.   $cena = "185,48 PLN (zawiera 22 % VAT)";
  3.   $cena = substr($cena, 0, strpos($cena, 'PLN'));
  4.   $cena = str_replace(' ', '', $cena);
  5.   $cena = (float)str_replace(',', '.', $cena);
  6.  
  7. if ($cena >= 100) {
  8.    echo "cena powyżej 100";
  9. } else {
  10.    echo "cena poniżej 100";
  11. }
  12.  
  13. ?>

powinno działać - u mnie smiga bez problemu :]

P.S. => Kolegi wyżej z floatval też działa :]

Ten post edytował melkorm 4.10.2008, 20:36:09


--------------------
Go to the top of the page
+Quote Post
kwiateusz
post
Post #7


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




moj kod miał osiagnac chyba to co chciałeś czyli pokazac 0.00

btw a moj kod z floatval probowałeś?
Go to the top of the page
+Quote Post
Arek00
post
Post #8





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

Ostrzeżenie: (0%)
-----


próbowałem:

(float)cena
floatval($cena)
settype($cena, "float")

i zawsze po tej operacji dostaję "0"

już nawet umieściłem plik testowy (tylko z tym kawałkiem kodu) w tym samym katalogu w którym jest ten docelowy plik i w testowym jest ok a w docelowym nie....
Go to the top of the page
+Quote Post
melkorm
post
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


a może pokaż cały kod? może akurat tam masz gdzieś błąd ...


--------------------
Go to the top of the page
+Quote Post
Arek00
post
Post #10





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

Ostrzeżenie: (0%)
-----


tutaj znajduje się kod: http://wmd6.ovh.org/kod.txt

mój fragment to linie 272-291
Go to the top of the page
+Quote Post
melkorm
post
Post #11





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


hm daj:
  1. <?php
  2. $cena = $ps_product->show_price($product_id);
  3. var_dump($cena);
  4. $cena = substr($cena, 0, strpos($cena, 'PLN'));
  5. $cena = (float)str_replace(',', '.', $cena);
  6. ?>


i pwiedz co to zwraca bo najwidoczniej tu jest błąd :/


--------------------
Go to the top of the page
+Quote Post
Arek00
post
Post #12





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

Ostrzeżenie: (0%)
-----


1.
  1. <?php
  2. $cena = $ps_product->show_price($product_id);
  3. var_dump($cena);
  4. ?>

efekt:
Kod
string(75) "  285,48 PLN (zawiera 22 % VAT) "

2.
  1. <?php
  2. $cena = $ps_product->show_price($product_id);
  3. $cena = substr($cena, 0, strpos($cena, 'PLN'));
  4. $cena = str_replace(',', '.', $cena);
  5. var_dump($cena);
  6. ?>

efekt:
Kod
string(38) "  285,48"

3.
  1. <?php
  2. $cena = $ps_product->show_price($product_id);
  3. $cena = substr($cena, 0, strpos($cena, 'PLN'));
  4. $cena = str_replace(',', '.', $cena);
  5. $cena2 = (float)$cena;
  6. var_dump($cena2);?>

efekt:
Kod
float(0)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:24