PHP: переменная имеет тип int, но не может выполнять вычисления - PullRequest
1 голос
/ 18 октября 2010
$bal = (int)$balance;
echo is_int($bal);

$ balance - из file_get_contents ($ webservice);

Я использую (int) для преобразования строки в целое число.is_int возвращает 1 для true в качестве подтверждения.

Поскольку значение $ bal всегда отрицательно, я делаю следующее вычисление, чтобы сделать его положительным:

$bal = $bal * -1;

Когда я это делаю,значение становится равным 0, хотя $ bal может быть -150 ранее.

РЕДАКТИРОВАТЬ 1 var_dump ($ balance) возвращает: string (110) "-399.6000"

РЕДАКТИРОВАТЬ 2 Я использовал XML Parser для присвоения переменной массиву - см. Мой ответ ниже.

Ответы [ 8 ]

3 голосов
/ 18 октября 2010

Я рекомендую функцию PHP abs() , если вы хотите убедиться, что вы всегда имеете дело с положительным числом:

$bal = abs($bal);
2 голосов
/ 18 октября 2010

Согласно вашему выводу var_dump ваша строка начинается с пробела.Используйте это:

$bal = intval(trim($balance));

1 голос
/ 18 октября 2010

Проблема в том, что я использовал file_get_contents для взаимодействия с методом GET для веб-службы.

Это возвращало данные заголовка XML, которые я пропустил при назначении переменной.

Чтобы очистить XML, чтобы у меня оставалось только нужное значение, я использовал PHP XML_PARSER, который сохранял file_get_contents в массиве, и позволил мне присвоить значению массива целое число.

$result = file_get_contents($base);

$p = xml_parser_create();
xml_parse_into_struct($p, $result, $vals, $index);
xml_parser_free($p);  
$bal = $vals[0]['value'];
echo $bal *-1;
0 голосов
/ 18 октября 2010

Что ваша программа делает с $ bal после умножения? Следующий скрипт PHP работал как положено на моем ноутбуке:

<?php
$balance = "-150";
$bal = (int)$balance;
echo is_int($bal);
$bal = $bal * -1;
echo $bal;
?>

Вывод «1150», потому что я не беспокоился о переводе строки. Можете ли вы опубликовать еще ваш код

0 голосов
/ 18 октября 2010

Я думаю, вы можете упростить ваши вычисления, используя функцию intval (), которая возвращает целочисленное значение любой переменной. Просмотрите описание функции, если у вас есть руководство по php.

0 голосов
/ 18 октября 2010
$balance="-150";
$bal = $balance*1;
echo $bal;

дает -150

0 голосов
/ 18 октября 2010
0 голосов
/ 18 октября 2010

попробуйте это, если хотите изменить знак:

$bal = $bal * (-1);

или используйте abs () , если хотите, чтобы он всегда был положительным:

$bal = abs($bal);
...