Пользовательская функция PHP, чтобы проверить, если значения являются пустыми - PullRequest
1 голос
/ 14 июня 2019

Я хотел бы упростить этот процесс PHP, который проверяет, является ли значение пустым.

Если значение не указано, переменная устанавливается равной нулю. Если нет, то для переменной задано значение.

В этом случае я успешно разместил объект jquery (называемый критериями) в PHP для обработки. Затем я устанавливаю переменные для значений в объекте. Я использую операторы IF / ELSE, чтобы проверить, является ли значение объекта пустым.

<?php
  if(isset($_POST['criteria']))
  {
    $value = $_POST['criteria'];

    if($value['recentsq'] == ""){$recentsq = null;}else{$recentsq = $value['recentsq'];}  
    if($value['custname'] == ""){$custname = null;}else{$custname = $value['custname'];} 
    if($value['address'] == ""){$address = null;}else{$address = $value['address'];} 
  }
?>

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

Мой вопрос: как я могу упростить этот процесс с помощью пользовательской функции?

Ответы [ 4 ]

4 голосов
/ 14 июня 2019

Вы можете просто создать метод, подобный:

function customfunction($valueString){
    return ($valueString != '' ? $valueString : null);
}

в вышеупомянутом методе, я использую троичный оператор.

В вашем примере вы можете просто вызвать этот метод как:

$recentsq = customfunction($value['recentsq']);
$custname = customfunction($value['custname']);
$address = customfunction($value['address']);

Дополнительный балл для будущих посетителей:

Согласно руководству по PHP , если вы используете PHP 7:

Нулевой оператор объединения (??) был добавлен как синтаксический сахар для общего случая необходимости использовать троичный в сочетании с Исеть (). Возвращает свой первый операнд, если он существует и не равен NULL; в противном случае возвращается второй операнд.

($valueString ?? null); // will use in method body

равно:

($valueString != '' ? $valueString : null);
2 голосов
/ 14 июня 2019

Или вы можете напрямую использовать оператор объединения Null из PHP 7

  if(isset($_POST['criteria']))
  {
    $value = $_POST['criteria'];

    $recentsq = $value['recentsq'] ?? null;
    $custname = $value['custname'] ?? null;
    $address = $value['address'] ?? null;
  }
1 голос
/ 14 июня 2019

В качестве альтернативы вы можете использовать empty функцию:

<?php

    $recentsq = empty($_POST['criteria']['recentsq']) ? null : $_POST['criteria']['recentsq'];
    $custname= empty($_POST['criteria']['custname']) ? null : $_POST['criteria']['custname'];
    $address= empty($_POST['criteria']['address']) ? null : $_POST['criteria']['address'];

?>

Тогда вам даже не нужно иметь отдельные isset чеки.

1 голос
/ 14 июня 2019

Может использовать следующую функцию, получить значение из массива и установить начальное значение по умолчанию, по умолчанию null

function arrayValue($array, $key, $default = null)
{
   return (array_key_exists($key, $array) && $array[$key] !== '') ? $array[$key] :     $default;
}

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

    $values = [
        'name' => 'David',
        'age' => 18,
        'sex' => '',
    ];
    $name = arrayValue($values, 'name');
    $age = arrayValue($values, 'age');
    $sex = arrayValue($values, 'sex', 'unknown');
    $country = arrayValue($values, 'country', 'unknown');

    print_r(
        [
            $name,
            $age,
            $sex,
            $country,
        ]
    );

Выход:

Array
(
    [0] => David
    [1] => 18
    [2] => unknown
    [3] => unknown
)

Как @christophe, так как php7 может сделать что-то вроде

$name = $values['name'] ?? null;
$country = $values['country'] ?? 'unknown';
...