PHP, проблема с возвращенным номером из API eBay


Похоже, у меня проблема с округлением (своего рода) чисел PHP по умолчанию, я звоню в API eBay и возвращаю цену товара и стоимость доставки. Мне нужно добавить эти два числа, прежде чем вводить их в свою базу данных, проблема, похоже, в том, что когда я добавляю два числа, они возвращаются со странным значением:

Доставка = 5,95 цена товара = 18,55

Если я сложу эти два, то получу результат 23

$ship = $item->shippingInfo->shippingServiceCost;
$price = $item->sellingStatus->currentPrice;
$sell = ($ship + $price);

Нужно ли мне сообщать php, что возвращаемое значение является номер?

Author: utsav, 2012-01-24

3 answers

Убедитесь, что оба ваших значения на самом деле являются целыми числами или числами с плавающей запятой, а не строками. Суммирование строк друг с другом может привести к странному поведению.

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

$ship = (float) $item->shippingInfo->shippingServiceCost;
$price = (float) $item->sellingStatus->currentPrice;
$sell = ($ship + $price);

Теперь $sell должен состоять из поплавка. Вы можете использовать (float) для приведения переменной к плавающей переменной.

 3
Author: stefandoorn, 2012-01-24 11:13:51

Взгляните на типизацию в целом, что очень важно в различных сценариях для вас, как разработчика PHP.

 0
Author: Elzo Valugi, 2012-01-24 11:24:07

Проблема не в том, что $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); 

И это должно сработать!

 0
Author: rauschen, 2012-01-24 11:25:14