Несоответствие типов данных PHP при сравнении - PullRequest
0 голосов
/ 19 ноября 2010

Итак, у меня есть 2 переменные, var1, var2.

$var1 = "53,000,000" //- integer
$var2 = 10 //- string

В конце я хочу сравнить оба, поэтому я

$var1 = (int)str_replace(",","",$var1); // => 53000000 - integer

Вот моя проблема .. если я сделаю:

if($var1 > $var2)  
    $var2 = $var1

Я получаю $var2 = 0 .... Почему?
.. работает на PHP 5.2.14

РЕДАКТИРОВАТЬ Случайно набрали в substr_replace вместо str_replace Обновлено.

Ответы [ 4 ]

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

Мне пришлось добавить пару точек с запятой, но вот код:

$var1 = "53,000,000"; //- integer
$var2 = 10; //- string
//In the end I want to compare both, so I

$var1 = (int)str_replace(",","",$var1); // => 53000000 - integer
//Here's my issue .. if I do:

if($var1 > $var2)  
    $var2 = $var1;

var_dump($var1, $var2);

А вот мой вывод:

int (53000000) int (53000000)

Я использовал 5.2.6, но это не должно иметь значения.Есть ли у вас какой-либо другой код между тем, что вы показываете?

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

Вы указали неправильные параметры для substr_replace, поэтому $ var1 оценивается как 0. Я думаю, вы хотели использовать str_replace.

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

Нет необходимости в типе литья. просто сделайте str_replace

Вот код

$var1 = "53,000,000" ;    
$var2 = 10;  
$var1=str_replace(',','',$var1);  
if($var1 > $var2)    
    $var2 = $var1;

    echo $var2;
0 голосов
/ 19 ноября 2010

Используйте str_replace() вместо substr_replace().

...