Эти две php-функции дают одинаковый результат? - PullRequest
0 голосов
/ 05 ноября 2018

В настоящее время я прохожу курс PHP и мне интересно, дают ли эти две функции один и тот же результат, одна из них более эффективна, чем другая? Если так, пожалуйста, объясните, спасибо.

public function is_logged_in(){
    if ($_SESSION['user_id'] == true){
        return true;
    }else{
        return false;
    }
}



public function is_logged_in(){
    if (isset($_SESSION['user_id'])){
        return true;
    }else{
        return false;
    }
 }

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Нет, они не одинаковы, вы можете проверить это

<?php
$falseVar = false;
var_dump(isset($falseVar));

это выдаст true , потому что переменная содержит false установлено .

, поэтому, если ваш $_SESSION['user_id'] протестирован с isset, он вернет истину, независимо от того, является ли $_SESSION['user_id'] истиной или ложью

Я думаю, вам нужно использовать !empty() вместо isset()

0 голосов
/ 05 ноября 2018

это зависит от того, что такое $ _SESSION ['user_id'].

isset используется для определения значения, не равного NULL. Это означает, что isset вернет false, пока $ _SESSION ['user_id'] равно нулю.

но '$ _SESSION [' user_id '] == true' работает более сложно.

значение будет автоматически преобразовано, если для оператора, функции или структуры управления требуется логический аргумент.

, следовательно, '$ _SESSION [' user_id '] == true' равно true или false, зависит от того, во что преобразуется $ _SESSION ['user_id'].

При преобразовании в логическое значение следующие значения считаются ЛОЖНЫМИ:

  • само логическое ЛОЖЬ
  • целое число 0 (ноль)
  • Поплавок 0.0 (ноль)
  • пустая строка и строка "0"
  • массив с нулевыми элементами
  • специальный тип NULL (включая неустановленные переменные)
  • SimpleXML-объекты, созданные из пустых тегов

PHP Booleans

0 голосов
/ 05 ноября 2018

Предполагая, $_SESSION['user_id'] является типичным числовым идентификатором и не равен 0, тогда да. Единственный сценарий, что это не то же самое, это когда $_SESSION['user_id'] буквально false, 0 или '' (пустая строка).

...