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

Sprawdzanie zawartości zmiennej

Object Storage Arubacloud
0 głosów
163 wizyt
pytanie zadane 15 kwietnia 2019 w PHP przez Proth Początkujący (310 p.)
Witam forumowiczów,

Mam problem, program, który piszę ma rysować funkcję zdefiniowaną przez użytkownika. Czyli użytkownik do inputa tekstowego wprowadza funkcję np. y=2x+1, i teraz nie wiem jak wyciągnąć tę funkcję z tej zmiennej, tak abym otrzymał $y=2*$x+1. Proszę o pomoc w rozwiązaniu problemu.
komentarz 15 kwietnia 2019 przez wiktoz Mądrala (7,040 p.)

Chcesz zrobić coś takiego?

komentarz 15 kwietnia 2019 przez Proth Początkujący (310 p.)
Coś podobnego, ale zasadę działania będzie miało taką samą do wpisanej funkcji powstanie wykres.

1 odpowiedź

+1 głos
odpowiedź 15 kwietnia 2019 przez wiktoz Mądrala (7,040 p.)

Użyj funkcji str_replace i wtedy podmieniasz x na jakąś tam liczbę, a całą zmienną zapisujesz do tablicy $y[liczba];. Musisz też uważać na to, że może być to zapisane np. 2x, wtedy jak to podmienisz na np. 1 to będzie 21. Trzeba sprawdzić, czy x znajduje się na 1. miejscu w stringu lub czy przed nim nie ma jakiegoś innego znaku. Warto wtedy skorzystać z funkcji strpos. Później musisz to przeobrazić we floata, bo nie wykona Ci się mnożenie. Możesz użyć do tego floatval.

komentarz 15 kwietnia 2019 przez Proth Początkujący (310 p.)
Dziękuję za odpowiedź i pomoc
komentarz 15 kwietnia 2019 przez Proth Początkujący (310 p.)
Jeszcze mam jedno pytanie do twojego rozwiązania.

Użyłem str_replace, wszystko działa podmieniło się i zakładając, że mam np. funkcję x+1 to po użyciu floatval pokazuje mi w wyniku tylko wartość z x, nie bierze pod uwagę tego +1. Jak teraz zrealizować to działanie po podmianie x na wartość?
komentarz 15 kwietnia 2019 przez wiktoz Mądrala (7,040 p.)

Hmm... tego rzeczywiście nie przewidziałem. Nie będziesz mógł tutaj użyć funkcji floatval. Możesz użyć funkcji eval();

$tekst = '2+3*8';
eval('$result = '.$test.';');
echo $result;

 

komentarz 1 maja 2019 przez Proth Początkujący (310 p.)

Przepraszam, że tak męczę temat, wszystko to co jest napisane wyżej działa. Nie mogę tylko obejść przypadku gdy podam wzór funkcji np. 2x+1, 2x^2+x. Jak dodać pomiędzy liczbę a znak x symbol mnożenia. 

$find='x';
$position=strpos($f,$find);

Otrzymuję pozycję na jakiej znajduje się x, ale nie wiem jak dodać znak *

komentarz 1 maja 2019 przez wiktoz Mądrala (7,040 p.)

Trzeba dodać if'a, który sprawdza czy przed x jest jakaś liczba. Jeżeli jest to zamieniasz z użyciem str_replace("*x","x",$tekst). Do tego if'a może Ci się przydać ta funkcja.

 

Podobne pytania

+2 głosów
3 odpowiedzi 268 wizyt
pytanie zadane 13 grudnia 2021 w PHP przez Bakkit Dyskutant (7,600 p.)
+1 głos
4 odpowiedzi 728 wizyt
pytanie zadane 10 września 2021 w Python przez Hajpa Użytkownik (910 p.)
+1 głos
1 odpowiedź 316 wizyt
pytanie zadane 25 lutego 2020 w Python przez PIxEL Nowicjusz (180 p.)

92,619 zapytań

141,468 odpowiedzi

319,791 komentarzy

62,002 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...