php文件中的nvl()函数

时间:2009-02-20 14:16:57

标签: php mysql

我只是在浏览一个php文件,并且遇到了以下代码:

switch (nvl($mode))
{
  case "add" :
     print_add_category_form(nvl($id, 0));
     break;

  case "edit" :
     print_edit_category_form($id);
     break;
}

nvl()函数做什么?

4 个答案:

答案 0 :(得分:6)

可能它就像Oracle的NVL功能,虽然据我所知,它需要两个参数。

我使用PHP作为语言搜索Google Code Search,并且有几个示例如下:

/**
* If $var is undefined, return $default, otherwise return $var.
*/
function nvl(&$var, $default = "")
{
    return isset($var) ? $var
                       : $default;
}

我认为你最好在代码中自己寻找声明,因为ceejayoz建议。

答案 1 :(得分:5)

或者,如果您有权访问PHP 7.0.0,请尝试null coalescing operator" ??"

而不是(Oracle语法):

nvl($id, 0)

您可以使用:

$id ?? 0

答案 2 :(得分:4)

谁知道?它不是标准的PHP函数。在代码中查找定义该函数的位置。

答案 3 :(得分:1)

请参阅以下链接,了解Oracle使用的nvl()的定义。 PHP没有。因此,代码示例的开发人员可能已经实现了类似的功能。

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions105.htm

在我的代码中,我使用自己的实现,这更接近Oracle定义的内容:

顺便说一下:“nvl”只是表示“[n] ull [v] a [l] ue”

// Function: nvl
//
// Replaces null or '' string.
//
// PARAMETERS:
//   $val     - Value to be returned normally.
//   $replace - Value to be returned if $val is null or ''.
//
// RETURNS:
//   See parameters.

function nvl($val, $replace)
{
    if( is_null($val) || $val === '' )  return $replace;
    else                                return $val;
}