Почему такое страное повеление массива при 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
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
== - это нестрогое сравнение. Строка 'catalog' приводится к 0, поэтому в первом случае у вас возвращается true.
Хотите проверить именно на число 0, используйте строгое сравнение ===
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы