Отдельная строка с разрывом переполнения стека

я использую 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];

0

Решение

Попробуй с этим. Просто замените «,» на «.» и это работает.

$data  = '10 x 2,5';
$data  = str_replace(',','.','10 x 2,5');
$array = explode("x", $data);
echo $total = $array[0]*$array[1];
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/

2

попробуй это:

<?php
$data  = '10 x 2,5';
$array = explode("x", $data);
$total = floatval(str_replace(',', '.', $array[0]))*floatval(str_replace(',', '.', $array[1]));
?>

Вот str_replace() используется для проверки, если есть ,
в строке, а затем преобразовать в его значение с плавающей точкой.
Надеюсь это поможет.

0

$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 ().

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector