Сравнение строк ведет себя по-разному - PullRequest
2 голосов
/ 10 марта 2011
$x = array(3) {
   [0]=>       "A - 1"
   [1]=>       "B - 4"
   ["Total"]=>     "5"
 }

TRY:

foreach($x as $k=>$v){
   if($k=="Total"){break;}
    echo $v."<br>";
 }

Потому что я просто хочу вывести:

A - 1
B - 4

Но я ничего не вижу в выводе.

что я не так делаю?

спасибо

Ответы [ 2 ]

5 голосов
/ 10 марта 2011

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

В первой итерации $k со значением 0, которое является числовым, сравнивается с "Total", которое являетсястрока и это сравнение возвращает true, потому что PHP преобразует строку "total" в число перед сравнением, а "total" при преобразовании в число равно 0.

Ideone

Чтобы это исправить, не используйте ==, вместо этого используйте strcmp, который преобразует числовые ключи в строку перед сравнением, или вы можете использовать ===, который проверяет тип и значение.

Ideone

0 голосов
/ 10 марта 2011

Поместите echo $v."<br>"; в оператор else ...

...