Если есть маленький вопрос, я думаю.
Я успешно использовал код из этого ответа на определенный вопрос: Получить DIV контент с внешнего сайта
Работает отлично. Вывод у меня например 9,1.
Теперь я хочу сделать это в процентах, так что должно быть 91%.
$second_step[0]
дает 9,1.
Я использовал следующий код, чтобы сделать его в процентах:
$score = $second_step[0] * 10;
…но это выдает 90 вместо 91.
Что я делаю не так? Это выглядит как простой код, но я не уверен, почему он выдает 90 вместо 91.
Надеюсь, кто-нибудь может мне помочь с этим.
Извините за мой плохой английский 🙂
Вероятно, связано с числовым форматом. Ваш пример показывает 9 [запятая] 1, который PHP будет видеть как строку, и при вычислении он возвращает первую числовую часть, с которой сталкивается скрипт (всего 9). Если вы хотите выполнять математические операции, вам нужно преобразовать его в число (чтение 9 [точка] 1).
$score = floatval(str_replace(',', '.', $second_step[0])) * 10;
Попробуй это
$val = floatval(str_replace(',', '', $second_step[0]));
Вы получаете 90, потому что он видит 10 как int.
Таким образом, ваш выход будет преобразован в int.
попробуй это:
$ score = $ second_step [0] * 10.0;
PHP видит 10 как int, а 10.0 как float.
Вы также можете разыграть 10 с плавающей точкой, выполнив это так:
$ score = $ second_step [0] * floatval (10);
Оба метода будут работать, но первый метод будет лучшим.
Ваш $second_step
рассматривается как целое число, см http://php.net/manual/de/language.types.string.php#language.types.string.conversion если вы явно не измените язык скрипта, используя Setlocale().
Если запятая должна остаться там, и вы не изменили язык, вы можете, например, сделать $temp = str_replace("," , "." , $setlocale[1]);