[英]php null replacement function
在Visual Basic中有一个名为Nz()的函数用于应用程序。 该函数检查变量nullity,如果发现变量为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;
}
如果变量可以设置为null( 编辑:它不能,感谢@deceze),添加另一个检查:
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.');
我认为使用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.');
如果您通过引用传递,PHP将不会出错:
function Nz(&$var, $def='') {
return isset($var) ? $var : $def;
}
如果声明变量,你会做一些像$ value?:$ replace
<?
function replace_null($value, $replace) {
if(empty($value) && $value !== '0') {
return $replace;
} else {
return $value;
}
}
$address = replace_null("0", "replacing null");
echo $address;
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.