如何检查字符串是否不存在然后返回false?

时间:2018-05-03 08:14:44

标签: php

如果$ str不存在,我试图让我的代码返回false

这是我尝试过的(但没有奏效):

function rev_epur_str($str)
{
    $str = implode(' ', array_map('strrev', explode(' ', $str)));
    $str = preg_replace('/\s+/', '', $str);
    if (isset($str)) 
    {
        return $str;
    }
    else
    {
        return false;
    }
}
var_dump(rev_epur_str());

输出说:

PHP Warning:  Missing argument 1 for rev_epur_str() 

它只返回错误而不是false

var_dump(rev_epur_str("")); // returns string(0) "" instead of FALSE

如果$str为空,我该如何返回false?

4 个答案:

答案 0 :(得分:2)

您可以在PHP中设置参数的默认值。下面的代码使$str成为可选参数,同时,它会进行empty检查以返回false。

function rev_epur_str($str = '')
{
    if (empty($str))
      return false;

    $str = implode(' ', array_map('strrev', explode(' ', $str)));
    $str = preg_replace('/\s+/', '', $str);

    return $str;
}

var_dump(rev_epur_str()); // false

var_dump(rev_epur_str('str')); // rts

注意:原始代码中显示的错误完全有效,您已设置您的函数采用参数,因此必须将参数传递给它,即,除非你为所述参数使用默认值(这是上面已经做过的)。

直播示例

Repl

阅读材料

Default Arguments

答案 1 :(得分:0)

不是返回布尔值,回显字符串,所以你可以确定它是否正常工作:

function rev_epur_str($str)
{
    $str = implode(' ', array_map('strrev', explode(' ', $str)));
    $str = preg_replace('/\s+/', '', $str);
    if (isset($str)) 
    {
        echo $str;
    }
    else
    {
        echo 'false';
    }
}

答案 2 :(得分:0)

您必须调用类似

的功能

的var_dump(rev_epur_str($ STR));

意味着$ str应该有一些价值;

答案 3 :(得分:0)

您的代码会抛出错误,因为您为函数声明了一个参数,并且在没有任何参数的情况下调用它。

解决这个问题并允许在没有参数的情况下调用函数的一种方法是声明一个这样的默认值(这里的值为NULL):

function rev_epur_str($str = NULL)
{
    //code here
}
rev_epur_str(); //will work

此外,测试isset仅在变量未设置或为NULL时才有效。如果您希望它使用空字符串,您可以尝试使用:

if (empty($str))
{
     return false;
}
//etc