я использую explode
в PHP, потому что мне нужно отделить строку. этого типа:
$Data = '10 x 4';
Мне нужно разделить числа, потому что затем я делаю математическую операцию над ними. Код у меня хорошо работает, когда они целые числа. Если у меня есть строка этого типа 10 x 2.5
он не учитывает десятичную часть, которая будет , 5
, Как я могу сделать так, чтобы я тоже учел эту роль?
$data = '10 x 2,5';
$array = explode("x", $data);
$total = $array[0]*$array[1];
Попробуй с этим. Просто замените «,» на «.» и это работает.
$data = '10 x 2,5';
$data = str_replace(',','.','10 x 2,5');
$array = explode("x", $data);
echo $total = $array[0]*$array[1];
Вот два подхода, которые вы могли бы использовать. Если вы можете изменить запятую на точку / точку:
$data = '10 x 2.5';
$floats = array_map('floatval', explode(' x ', $data));
echo $floats[0] * $floats[1];
Демо-версия: https://3v4l.org/hFMEt
или вы можете использовать регулярное выражение, которое также подтвердит, что у вас правильный формат данных.
echo preg_replace_callback('/(\d+(?:[.,]\d+)?)\h*x\h*(\d+(?:[.,]\d+)?)/', function($match) {
return str_replace(',' , '.', $match[1]) * str_replace(',' , '.', $match[2]);
}, $data);
PHP Demo: https://3v4l.org/I82Gt
Regex Demo: https://regex101.com/r/tTcJSp/1/
попробуй это:
<?php
$data = '10 x 2,5';
$array = explode("x", $data);
$total = floatval(str_replace(',', '.', $array[0]))*floatval(str_replace(',', '.', $array[1]));
?>
Вот str_replace()
используется для проверки, если есть ,
в строке, а затем преобразовать в его значение с плавающей точкой.
Надеюсь это поможет.
$data = '10 x 2,5';
$array = explode("x", $data);
$decimal =$array[1];
//replace the comma with dot
$decimal_formated = str_replace(',', '.', $decimal);
//format the string to float
$decimal_formated = (float)$decimal_formated;
//OR $decimal_formated = floatval($decimal_formated);
//get total
$total = $array[0]*$decimal_formated;
//french format $total, with comma
$total_with_comma =number_format($total, 1, ',', ' ');echo $decimal.'</br>'; //output 2,5
echo $decimal_formated.'</br>'; //output 2.5
echo $total.'</br>'; //output 25
echo $total_with_comma.'</br>'; // output 25,0
Ты можешь использовать number_format (), floatval ().