php空替换函数


php null replacement function

在应用程序的visual basic中有一个名为Nz((的函数。该函数检查变量null,如果发现变量为null,则返回提供的值。

我尝试在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']为null,php将停止执行代码,并且不会调用replace_null

我目前使用的是三元

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

但我认为replace_null如果能起作用,会提供一种更方便的方式。

php中是否有一个函数提供与vba的Nz((相同的功能?任何建议都将不胜感激。

提前谢谢。

有点迂回:如果你只使用它来检查数组成员,你可以单独传递密钥:

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

如果变量可以设置但为空(编辑:,但它不能,谢谢@decze(,请添加另一个检查:

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

如前所述,isset()只在非null值上成功,因此上面没有添加任何内容。不过,我们可以用array_key_exists编写一个非平凡的检查:

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

您可以像这样分别传递数组和密钥:

function valueOrDefault($array, $key, $default) {
    return isset($array[$key]) ? $array[$key] : $default;
}
$address = valueOrDefault($data, 'address', 'Address is not available.');

如果通过引用,PHP不会出错:

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

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

如果声明了变量,则执行类似$value?的操作:$替换

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

试试这个。它将允许您调用带有或不带有传递参数的函数。

<?
function replace_null($value, $replace) {
    if(empty($value) && $value !== '0') {
        return $replace;
    } else {
        return $value;
    }
}
$address = replace_null("0", "replacing null");
echo $address;
?> 

我认为使用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.');