Использование"! " в PHP


я искал референтную тему в StackOverflow, но нашел только следующее Double not (!!) operator in PHP.

какова функциональность этого оператора ! в:

if(!empty($_GET)){
}

или

if(!empty($_POST)){
}

Что особенного, какой случай или ошибка вы избегаете.

можете объяснить мне:)

Author: smt, 2019-03-24

4 answers

Мы исходим из того, что функция empty() анализирует и определяет, пуста ли переменная

Итак, для случая

if(empty($_POST['nombre'])){
   ...... código si la variable viene vacía
}

Мы проверяем, что если переменная $_POST['nombre'] пуста, то выполняется определенный блок кода

Теперь оператор ! применяется к переменной !empty($_POST['nombre']) меняет природу самой функции, которая переходит от проверить, не пуста ли она к проверить, что это не пустой

Например

$numero = 1;

if(!empty($numero)){
    echo "Variable no vacía";
}else{
    echo "variable vacía";
}

Приведенный выше код вернет variable no vacía потому что с оператором ! мы указываем если переменная $ number не пуста Поэтому первое условие выполняется и печатает это сообщение

 2
Author: , 2019-03-25 00:06:16

Функция логического оператора NOT заключается в том, чтобы отрицать выражение, которое устанавливает оператор if. Подробнее о логических операторах здесь.

Для вашего случая:

if(!empty($_GET)){
}

Оператор if будет выполнен, если $_GET не пуст.

 1
Author: smt, 2019-03-25 00:03:53

Как уже говорили товарищи, ! соответствует логическому оператору not.

Для понимание, в PHP-коде если, когда вы видите ! перед чем-либо, вы меняете его на нет ..., Вы поймете, что это такое. Таким образом, ваш код:

if(!empty($_GET)){
    //haz esto
}

Можно понять так в разговорной речи: Если $_GET не пусто ... сделайте это...

Если вы удалите оператор отрицания, произойдет обратное конечно:

if(empty($_GET)){
    //haz esto
}

Если $_GET пусто ... сделайте это.

Интересное использование

Существует интересное использование empty при работе со значениями, поступающими из $_GET или из $_POST или других. Речь идет о объединении его с тройным оператором, чтобы проверить состояние данных и в то же время сохранить его значение в переменной.

- это то, что я обычно делаю, например, перед данными $_GET, которые являются обязательными для запуска определенных блоки кода. Предположим сценарий, в котором id и name являются обязательными, и если они приходят пустыми, код не должен продолжаться:

$id =   !empty($_GET['id'])   ? $_GET['id']   : NULL;
$name = !empty($_GET['name']) ? $_GET['name'] : NULL;

Здесь сказано что-то вроде: Если $_GET['id'] не пусто, сохраните его значение в переменной $id, иначе $id будет NULL.

Затем, если для кода требуются данные для id и для name, это будет сделано:

if ($id && $name) {
    $date = !empty($_GET['date']) ? $_GET['date'] : NULL;
    //Trabajar con las variables $id, $name, $date
} else {
    echo "No se puede seguir, faltan datos esenciales";
}

И когда вам нужны значения, так как мы уже сохранили их используя тройной, мы используем переменные, созданные там.

Обратите внимание, что значение $date я получаю внутри if, потому что это только в этом блоке, где мне это нужно. Важным принципом программирования является не объявлять или создавать ресурсы, не будучи уверенным, что вы собираетесь их использовать.

Приведенная выше оценка также может быть выполнена непосредственно, действуя на значения, которые приходят в $_GET:

if (!empty($_GET['id'] && !empty($_GET['name']) {
    //aquí, hay que hacer uso de nuevo de $_GET['id'] y de $_GET['name']
} else {

}

Но это уродливее и менее практично, потому что затем, когда вам нужны значения, вам придется снова вытащить $_GET['id'] ... и т. д.


! он не всегда одинок

Следует также сказать, что ! не всегда работает в одиночку. Вы можете увидеть это в других сценариях, например:

if ($a != $b) {

}

Или:

if ($a !== $b) {

}

В этих двух случаях мы говорим тогда о операторы сравнения.

Первое легко понять, если мы используем технику, применяемую в начале. Означает если $a не равно $b.

Второе означает, с одной стороны, то же, что и первое: Если $a не равно $b, но при двойном использовании знака == указывается, что он сравнивает не только значения, но и типы. То есть Если $a не равно $b или если они не одного типа. В PHP это называется строгое сравнение.

Давайте посмотрим на некоторые примеры.

Здесь переменные имеют одинаковое значение 1, но один из них имеет тип string, а другой - тип int:

$a="1";
$b=1;

if ($a!=$b){
    echo "valor no es igual";
}else{
    echo "valor es igual";
}  

echo PHP_EOL;
if ($a!==$b){
    echo "valor o tipo no es igual";
}else{
    echo "valor es igual y tipo es igual";
}  

Выход:

valor es igual
valor o tipo no es igual

Теперь сравним со значениями того же типа:

$a=1;
$b=1;
echo PHP_EOL;

if ($a!=$b){
    echo "valor no es igual";
}else{
    echo "valor es igual";
}  

echo PHP_EOL;
if ($a!==$b){
    echo "valor o tipo no es igual";
}else{
    echo "valor es igual y tipo es igual";
}

Выход:

valor es igual
valor es igual y tipo es igual
 1
Author: A. Cedano, 2020-06-11 10:54:57

! делает отрицание empty проверяет, является ли он пустым $_GET, $_POST, $_PUT и т. д.-Это методы http, которые вы используете для передачи данных из внешнего интерфейса в бэкэнд

$_GET получают URL в отличие от других, которые делают это внутри ...

if(!empty($_GET["variable"])){
    echo "Variable no vacía";
}else{
    echo "variable vacía";
}



if(empty($_POST["variable"])){
    echo "Variable vacía";
}else{
    echo "variable no vacía";
}
 0
Author: Edson Suárez, 2019-03-25 01:58:40