Когда $ key равен 0
и сравнивается со строкой " id ", строка (" id ") будет преобразована в целое число. Поскольку " id " не может быть преобразовано в действительное целое число, преобразование даст 0
, и оператор if станет истинным.
Поскольку вы не хотите, чтобы неявное преобразование происходило между двумя несовместимыми типами, используйте более строгую ===
версию ==
. ===
увидит, имеют ли переменные одинаковый тип и одинаковое ли точное значение.
if ($key === "id") {
...
}
Документация PHP: операторы сравнения
Примеры
var_dump (0 == (int)"id");
var_dump ((string)0 == "id");
var_dump (0 === "id");
var_dump (1.0 === 1);
выход
bool(true)
bool(false)
bool(false)
bool(false) # be careful!