Сравнение строк ведет себя по-другому
$x = array(3) {
[0]=> "A - 1"
[1]=> "B - 4"
["Total"]=> "5"
}
ПОПРОБУЙТЕ:
foreach($x as $k=>$v){
if($k=="Total"){break;}
echo $v."<br>";
}
Потому что я просто хочу вывести:
A - 1
B - 4
Но я ничего не вижу в выводе.
Что я не так делаю?
Спасибо
2
2 answers
Вы ничего не получаете на выходе, когда вы выходите из цикла в первый же раз.
На первой итерации $k
со значением 0
, которое является числовым, сравнивается с "Total"
, которое является строкой, и это сравнение возвращает true
, потому что PHP преобразует строку "total"
в число перед сравнением и "total"
при преобразовании в число 0
.
Чтобы исправить это, не используйте ==
, вместо этого используйте strcmp
, который преобразует цифровые клавиши в строка перед сравнением или вы можете использовать ===
, который проверяет тип, а также значение.
5
Author: codaddict, 2011-03-10 10:14:25
Поместите echo $v."<br>";
в оператор else......
-1
Author: Shaun, 2011-03-10 10:00:38