Несоответствие типов данных PHP при сравнении

Итак, у меня есть 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 ответа

Решение

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

$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, но это не должно иметь значения. Есть ли у вас какой-либо другой код между тем, что вы показываете?

Использование str_replace() вместо substr_replace(),

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

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

Вот код

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

    echo $var2;
Другие вопросы по тегам