оператор if — PHP: предложение IF выполняется, но дамп говорит, что не должен

Я сижу с довольно простым загрузчиком изображений, где первое загруженное изображение будет обрабатываться особым образом. Затем я запускаю цикл над всеми файлами и пропускаю первое изображение.

Для этого я назвал первое изображение headImage и пропустил его, когда оно было перемещено, и сделал с ним другие вещи.

Я вырезал весь лишний код и только отображаю цикл, вызывающий мою проблему:

Сортированный массив изображений:

array (size=5)
'headImage' =>
array (size=5)
'name' => string '8-skilling-1606-eller-07-54-1-h93a.jpg' (length=38)
'type' => string 'image/jpeg' (length=10)
'tmp_name' => string '/tmp/phpNUoAtX' (length=14)
'error' => int 0
'size' => int 37748
0 =>
array (size=5)
'name' => string '807003718_2_Big.jpg' (length=19)
'type' => string 'image/jpeg' (length=10)
'tmp_name' => string '/tmp/php1TXBdm' (length=14)
'error' => int 0
'size' => int 36328

Цикл Foreach, который пропускает, если fileKey имеет значение «headImage», и сбрасывает fileKey

foreach($uploadFiles as $fileKey => $file){
if($fileKey == "headImage"){
var_dump($fileKey);
continue;
}
}

И вывод из var_dump:

string 'headImage' (length=9)
int 0

Теперь, почему предложение if выполняется, когда значение $ fileKey явно не является «headImage»?

0

Решение

Так как "string" == 0 в PHP.

Вы должны сравнить, используя тип тоже, попробуйте === Сравнение:

foreach($uploadFiles as $fileKey => $file){
if($fileKey === "headImage"){
var_dump($fileKey);
continue;
}
}
2

Другие решения

лучший и безопасный способ сравнить две строки — использовать функцию php strcmp

используйте как это:

foreach($uploadFiles as $fileKey => $file){
if(strcmp($fileKey ,"headImage") == 0){
var_dump($fileKey);
continue;
}
}

PHP strcmp функция Document

3