Nie znam PHP w ogóle i miałem krótkie pytanie.
Mam 2 zmienne pricePerUnit
i InvoicedUnits
. Oto kod, który nadaje im wartości:
$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Jeśli to wyświetlę, otrzymam prawidłowe wartości. Powiedzmy 5000
zafakturowane jednostki i 1.00
ceny.
Teraz muszę pokazać całkowitą wydaną kwotę. Kiedy pomnożę te dwa razem, nie działa (zgodnie z oczekiwaniami są to ciągi).
Ale nie mam pojęcia, jak analizować / rzutować / konwertować zmienne w PHP.
Co powinienem zrobić?
VARCHAR>11
długością ... nie zawęziłem jeszcze dlaczego.Chcesz zakaz lokalizacji świadomy
floatval
funkcji :Przykład:
źródło
(float)
Cóż, jeśli użytkownik zapisze 1,00,000, floatvar pokaże błąd. Więc -
Jest to znacznie bardziej niezawodne.
Stosowanie :
źródło
$string=preg_replace("/[^0-9\.\-]/","",$string);
Radzenie sobie ze znacznikami w zmiennoprzecinkowych jest nietrywialnym zadaniem. W notacji angielskiej / amerykańskiej formatujesz tysiąc plus
46*10-2
:Ale w Niemczech zmieniłbyś przecinek i kropkę:
To sprawia, że naprawdę trudno jest odgadnąć właściwą liczbę w aplikacjach wielojęzycznych.
Zdecydowanie sugeruję użycie
Zend_Measure
Zend Framework do tego zadania. Ten składnik przeanalizuje ciąg znaków do postaci zmiennoprzecinkowej według języka użytkownika.źródło
intl
rozszerzeniem.Użyj tej funkcji, aby rzutować wartość zmiennoprzecinkową z dowolnego stylu tekstu:
To rozwiązanie nie jest zależne od żadnych ustawień regionalnych. W ten sposób użytkownicy mogą wpisywać wartości zmiennoprzecinkowe w dowolny sposób. Jest to bardzo pomocne, np. Gdy masz projekt, który jest tylko w języku angielskim, ale ludzie na całym świecie go używają i mogą nie pamiętać, że projekt potrzebuje kropki zamiast przecinka dla wartości typu float. Możesz wrzucić javascript do miksu i pobrać domyślne ustawienia przeglądarki, ale nadal wiele osób ustawia te wartości na angielski, ale nadal wpisuje 1,25 zamiast 1,25 (szczególnie, ale nie wyłącznie, w branży tłumaczeniowej, badaniach i IT)
źródło
Miałem problem ze standardowym sposobem, aby to zrobić:
Jeśli nie ma poprawnej liczby, parser nie powinien zwracać liczby, powinien zgłosić błąd. (Jest to warunek, który próbuję złapać w swoim kodzie, YMMV)
Aby to naprawić, wykonałem następujące czynności:
Następnie przed dalszym przetwarzaniem konwersji mogę sprawdzić i zwrócić błąd, jeśli nie ma prawidłowej analizy ciągu.
źródło
Jeśli potrzebujesz obsługiwać wartości, których nie można osobno przekonwertować, możesz użyć tej metody:
źródło
możesz skorzystać z tego linku, aby dowiedzieć się więcej o tym, jak przekonwertować ciąg / liczbę na liczbę / zmiennoprzecinkowe / dziesiętne w PHP. OTO CO MÓWI TEN LINK ...
Metoda 1: użycie funkcji number_format (). Funkcja number_format () służy do konwersji ciągu znaków na liczbę. Po pomyślnym zakończeniu zwraca sformatowaną liczbę, w przeciwnym razie w przypadku niepowodzenia zwraca E_WARNING.
Metoda 2: Używanie rzutowania typów: Rzutowanie typów może bezpośrednio konwertować ciąg znaków na typ pierwotny typu float, double lub integer. To najlepszy sposób na przekształcenie ciągu znaków w liczbę bez żadnej funkcji.
Metoda 3: Użycie funkcji intval () i floatval (). Funkcje intval () i floatval () mogą również służyć do konwersji łańcucha na odpowiadające mu wartości całkowite i zmiennoprzecinkowe.
Metoda 4: Dodając 0 lub wykonując operacje matematyczne. Numer ciągu można również przekształcić w liczbę całkowitą lub zmiennoprzecinkową, dodając 0 do ciągu. W PHP, wykonując operacje matematyczne, łańcuch jest niejawnie konwertowany na liczbę całkowitą lub zmiennoprzecinkową.
źródło