PHP - int typecast числового строкового значения, дающего 0 - PullRequest
0 голосов
/ 02 ноября 2010

ОК, значит, я запрашиваю страницу на другом сервере, которая возвращает разделенный запятыми список двух значений.Что-то, что это возвратило бы, было бы:

850,640

У меня есть некоторый код PHP, который вызывает file_get_contents на этой странице и должен сделать некоторые числовые вычисления на основе этих двух значений.попробуйте, я не могу получить значение int из этого.

$res = trim(file_get_contents('http://thatURL/'));
echo "X" . $res . "X<br/>";
list($x,$y) = array_map(create_function('$a', 'return (int)$a;'), explode(',', $res));

echo "X:$x";

приводит к выводу:

X 850,640 X
X:0

Обратите внимание на пробелы до и после разделенной запятойзначения (как, черт возьми? Я trim 'их!) и что $x присвоено значение 0.

Что я здесь не так делаю?

Ответы [ 4 ]

3 голосов
/ 02 ноября 2010

Что я здесь не так делаю?

Насколько я понимаю, ничего, что указывает на то, что содержимое $ res не совсем то, что вы ожидаете.Не могли бы вы изменить первый эхо на:

echo htmlentities($res);

Я предполагаю, что $ res содержит некоторые непечатные символы, например, на самом деле:

<span> </span>850,640<span> </span>

или

&nbsp;850,640&nbsp;
1 голос
/ 02 ноября 2010

PHP не является типизированным языком. Используйте intval для преобразования строки в целое число.

Исправление: это свободно напечатанный язык! Вот что я имел ввиду!

1 голос
/ 02 ноября 2010

Попробуйте следующее. array_map и функция llamda, возможно, излишни для вашего использования.

$res = " 850,640 ";
echo "X" . $res . "X<br/>";
list($x,$y) = explode(',', trim($res));

echo "X:" . (int)$x;
echo "Y:" . (int)$y;

У меня сработало, но я не пользуюсь file_get_contents(). Если это не работает, на странице выводится что-то еще.

0 голосов
/ 02 ноября 2010

Поскольку я использовал file_get_contents() для URL, был также вставлен некоторый HTML, который я не заметил в моем echo, потому что он анализировал ... только пустое тело и HTML-теги. Oops!

...