PHP замена нулевой функции - PullRequest
       5

PHP замена нулевой функции

1 голос
/ 18 августа 2011

в Visual Basic для приложения есть эта функция Nz ().функция проверяет нулевую переменную и возвращает предоставленное значение, если находит, что переменная равна нулю.

Я пытаюсь написать ту же функцию в php, которая выглядит следующим образом:

function replace_null($value, $replace) {
    if (!isset($value)) {
        return $replace;
    } else {
        return $value;
    }
}

$address = replace_null($data['address'], 'Address is not available.');

конечно, если $data['address'] найден нулевым, php прекратит выполнение кода и replace_null не будет вызван.

В настоящее время я использую троичный

(isset(data['address']) ? data['address'] : 'Address is not available.');

но я думаю replace_null, если это сработает, предложит более удобный способ.

Есть ли в php функция, которая обеспечивает ту же функциональность, что и nz () vba?Любое предложение будет оценено.

заранее спасибо.

Ответы [ 6 ]

3 голосов
/ 18 августа 2011

Немного обойти: Если вы используете это только для проверки элементов массива, вы можете передать ключ отдельно:

function get_with_default($arr, $key, $defval)
{
  return isset($arr[$key]) ? $arr[$key] : $defval;
}

Если переменная может быть установлена, но имеет значение null ( Редактировать: который не может, спасибо @deceze), добавьте еще одну проверку:

function get_and_coalesce_with_default($arr, $key, $defval)
{
  return (isset($arr[$key]) && !is_null($arr[$key]) ? $arr[$key] : $defval;
}

Как уже отмечалось, isset() успешно выполняется только для ненулевых значений, поэтому вышеприведенное ничего не добавляет.Мы можем написать нетривиальную проверку с помощью array_key_exists, но:

function get_with_default_v2($arr, $key, $defval)
{
  return (array_key_exists($key, $arr) && !is_null($arr[$key]) ? $arr[$key] : $defval;
}
1 голос
/ 18 августа 2011

Вы можете передать массив и ключ отдельно следующим образом:

function valueOrDefault($array, $key, $default) {
    return isset($array[$key]) ? $array[$key] : $default;
}

$address = valueOrDefault($data, 'address', 'Address is not available.');
0 голосов
/ 08 июня 2016

Если переменная объявлена, вы делаете что-то вроде $ value?: $ Replace

0 голосов
/ 10 ноября 2014

Если вы перейдете по ссылке, PHP не выдаст ошибку:

function Nz(&$var, $def='') {
    return isset($var) ? $var : $def;
}

http://php.net/manual/en/language.references.pass.php

0 голосов
/ 10 сентября 2013

Я думаю, что использование функции is_null было бы гораздо более полезным:

$address = $data['address'];
if ( is_null($address) ) $address = 'Address is not available.';

Если вы действительно хотите это как функция:

function replace_null($value, $replace) {
    if (is_null($value)) return $replace;
    return $value;
}
$address = replace_null($data['address'], 'Address is not available.');
0 голосов
/ 18 августа 2011
<?
function replace_null($value, $replace) {
    if(empty($value) && $value !== '0') {
        return $replace;
    } else {
        return $value;
    }
}

$address = replace_null("0", "replacing null");
echo $address;
?> 
...