Почему такое страное повеление массива при forech?

class Imagine{
public function resize($width){
        $nameArr=array();
        foreach ($width as $key =>$val) {
            $nameArr[] = ($key == 0);
        }
        return $nameArr;
    }
}
Class Image{
public function save(){
  $width=[
     0=>450,
     'catalog'=>260
      ]
     $imagine = new Imagine();
    return var_dump($imagine->resize($width));
 }
}


получаю array (size=2)
0 => boolean true
  1 => boolean true


при этом если так
class Imagine{
public function resize($width){
        $nameArr=array();
        foreach ($width as $key =>$val) {
            $nameArr[] = $key;
        }
        return $nameArr;
    }
}

то получаю вот так
array (size=2)
  0 => int 0
  1 => string 'catalog' (length=7)

а вот так
class Imagine{
public function resize($width){
        return $width;
    }
}

вот так
array (size=2)
  0 => int 450
  'catalog' => int 261
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
== - это нестрогое сравнение. Строка 'catalog' приводится к 0, поэтому в первом случае у вас возвращается true.
Хотите проверить именно на число 0, используйте строгое сравнение ===
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Zaymigo Нижний Новгород
от 20 000 до 100 000 руб.
Devmasterz Тюмень
от 80 000 до 120 000 руб.