Я сижу с довольно простым загрузчиком изображений, где первое загруженное изображение будет обрабатываться особым образом. Затем я запускаю цикл над всеми файлами и пропускаю первое изображение.
Для этого я назвал первое изображение 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»?
Так как "string" == 0
в PHP.
Вы должны сравнить, используя тип тоже, попробуйте ===
Сравнение:
foreach($uploadFiles as $fileKey => $file){
if($fileKey === "headImage"){
var_dump($fileKey);
continue;
}
}
лучший и безопасный способ сравнить две строки — использовать функцию php strcmp
используйте как это:
foreach($uploadFiles as $fileKey => $file){
if(strcmp($fileKey ,"headImage") == 0){
var_dump($fileKey);
continue;
}
}