Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Typ operatorów arytmetycznych w PHP
Michael2318
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


zwykła cyfra 1 to int. Czym zatem są operatory typu +/-/* (IMG:style_emoticons/default/questionmark.gif) Mam string (nie do końca taki, ale podaje przykład):

  1. $zmienna = '+';


jak go zamienić ze stringu na coś co spowoduje, że takie coś:

  1. $pierwsza = '1';
  2. $aritmetic = '+';
  3. $druga = '2';
  4.  
  5. $res = $pierwsza.$aritmetic.$druga;


Zwróci mi 3 ? Cale wyrażenie zamienione na intval() nie działa jak trzeba bo wtedy znak arymetyczny przyjmuje 0. Jesli zamienie to na boolean to + przyjmie true, reszta false. Przekopałem wszystkie typy danych w PHP i żaden jak dla mnie nie pasuje do tego typu wyrażeń...
Próbowałem tez swoją tablice zapisać zamiast tak:

  1. $tablica = array(
  2. 1 => '+',
  3. 2 => '-',
  4. 3 => '*');


to tak:

  1. $tablica = array(
  2. 1 => +,
  3. 2 => -,
  4. 3 => *);


Ale to zwraca błędy, dlatego te znaki mam jako string zapisane.

Ten post edytował Michael2318 30.12.2012, 16:12:45
Go to the top of the page
+Quote Post
klocu
post
Post #2





Grupa: Zarejestrowani
Postów: 291
Pomógł: 45
Dołączył: 21.08.2007

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


Zrobienie czegoś takiego uda się takim sposobem:
  1. $op = '5-1';
  2. eval("\$a = $op;");
  3. echo $a;

Ale nie jest on polecany, bo zawsze znajdzie się inne bezpieczniejsze rozwiązanie.

  1. $res = $pierwsza.$aritmetic.$druga;

A tu dokonywałeś złączenia trzech stringów i tyle. Wynik tego scalenia można upchnąć do eval'a przedstawionego powyżej i wtedy zadziała.
Go to the top of the page
+Quote Post
gr56
post
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 15
Dołączył: 19.11.2011

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


Musisz każdy opertator zaprogramować osobno
  1. if($zmienna == "+") $res = $pierwsza+$druga;
  2. if($zmienna == "-") $res = $pierwsza-$druga
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 01:26