2016-02-09 23 views
1

В laravel я прошел промежуточное руководство по списку задач и столкнулся с проблемой. Если вы идете по этой ссылке: https://laravel.com/docs/5.2/quickstart-intermediate#deleting-tasks, под заголовком «Авторизация», вы найдете ниже упомянутый код:Почему код с === не работает, но работает отлично с ==?

public function destroy(User $user, Task $task) 
{ 
    return $user->id === $task->user_id; 
} 

Здесь метод destroy хорошо работает, когда она содержит return $user->id == $task->user_id;, но не работает, когда она содержит return $user->id === $task->user_id;. Зачем?

Различия в обоих кодексах: == и ===.

+0

=== оператор проверяет как значение, так и тип. Google it: http://php.net/manual/es/language.operators.comparison.php –

+0

Спасибо. Вы тоже были правы. – RoMo

ответ

3

Это поможет вам.

При сравнении значений в PHP для равенства вы можете использовать либо оператор ==, либо оператор ===. В чем разница между 2? Ну, это довольно просто. Оператор == просто проверяет, равны ли левое и правое значения. Но оператор === (обратите внимание, что дополнительный =) проверяет, равны ли левое и правое значения, а также проверяет, имеют ли они один и тот же тип переменной (например, являются ли они логическими, int и т. Д.), ,

+0

Да, отлично. Благодарю. Я проверил оба конца с помощью var_dump() и нашел один из типов «int», а другой - «string», который ограничивал значение === для получения истины. – RoMo

Смежные вопросы