PHP, проблема с возвращенным номером из API eBay
Похоже, у меня проблема с округлением (своего рода) чисел PHP по умолчанию, я звоню в API eBay и возвращаю цену товара и стоимость доставки. Мне нужно добавить эти два числа, прежде чем вводить их в свою базу данных, проблема, похоже, в том, что когда я добавляю два числа, они возвращаются со странным значением:
Доставка = 5,95 цена товара = 18,55
Если я сложу эти два, то получу результат 23
$ship = $item->shippingInfo->shippingServiceCost;
$price = $item->sellingStatus->currentPrice;
$sell = ($ship + $price);
Нужно ли мне сообщать php, что возвращаемое значение является номер?
3 answers
Убедитесь, что оба ваших значения на самом деле являются целыми числами или числами с плавающей запятой, а не строками. Суммирование строк друг с другом может привести к странному поведению.
Попробуйте это:
$ship = (float) $item->shippingInfo->shippingServiceCost;
$price = (float) $item->sellingStatus->currentPrice;
$sell = ($ship + $price);
Теперь $sell должен состоять из поплавка. Вы можете использовать (float)
для приведения переменной к плавающей переменной.
Взгляните на типизацию в целом, что очень важно в различных сценариях для вас, как разработчика PHP.
Проблема не в том, что $ship - это строка с 5.95
.. которая была бы правильно преобразована в float, но я думаю, что это так.. 5,95
и это будет преобразовано в 5
<?php
$ship = "5,95";
$price = "18,55";
$sell = ($ship + $price);
echo "$sell = ($ship + $price)";
?>
Вывод:
23 = (5,95 + 18,55)
Преобразовать:
<?php
$ship = (float) "5,95";
$price = (float) "18,55";
$sell = ($ship + $price);
echo "$sell = ($ship + $price)";
?>
Вывод:
23 = (5 + 18)
Использование:
$ship = str_replace(',','.',$ship);
$price = str_replace(',','.',$price);
И это должно сработать!