微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用空和 strcmp 比较 2 个字符串

如何解决使用空和 strcmp 比较 2 个字符串

你好,所以我想它很简单。我需要检查给定的 2 个字符串是否为空,然后使用 strcmp 比较两个字符串,并让它回调一个函数,如果它们匹配或不匹配,该函数将回显一个语句。这就是我所拥有的

public class ErrorFilter : IExceptionFilter //and other interfaces as you need
{
    public void OnException(ExceptionContext context)
    {
        context.HttpContext.Items.TryGetValue("body",out object body);
    }
}

我创建了一个 if 语句来检查字符串是否为空,但我想知道是否有办法创建一个 if 语句来检查两个字符串是否为空。我试过了

    $firstString = "Geek2Geek";
    $secondString = "Geezer2Geek";

    function sameVar($firstString,$secondString) {
        echo "Both strings similar";
    }

    function diffVar($firstString,$secondString) {
        echo "Both strings do not the same";
    }

    if (empty($firstString)) {
        echo "The first string is empty";
    } else {
        echo "The first string is not empty";
    }

    if (empty($secondString)) {
        echo "The second string is empty";
    } else {
        echo "The second string is not empty";
    }

    if (strcmp($firstString,$secondString) !== 0) {
        sameVar($firstString,$secondString);
    } else {
        diffVar($firstString,$secondString);
    } 

但是当我重新加载页面时什么也没有出现。在 VSCode 中也给了我一个红点

我想第二件事是使用 strcmp 并让它调用函数。我玩弄了它并删除了 $secondString 中的值,它仍然调用函数 sameVar

编辑:

根据说明,如果检查两个字符串都不为空,我必须在第一个 if 语句中嵌套一个 if 语句。我完成了它,它几乎完成了。我只需要弄清楚如何在最后包含一个 else 子句,如果 $firstString 或 $secondString 包含空值,该子句就会执行。

我的另一个问题是这两个函数都没有回显完整的句子。它应该回应“Geek2Geek 和 Geezer2Geek 都不匹配”,而不是我得到“两者都不匹配”

if (empty($firstString,$secondString))

解决方法

要检查两个字符串是否为空,请执行以下操作:

if (empty($firstString) && empty($secondString)) {

   ...
}

此外,您可能还想了解 logical operators

关于 strcmp,您只需要翻转函数调用 - !== 0 表示两个字符串 are not equal

,

由于 empty 接受只有一个参数 (manual),因此您不能像 empty($firstString,$secondString) 一样使用它。

因此,如果您要检查 both 字符串是否为空,那么您的代码是:

if (empty($firstString) && empty($secondString)) {
    echo 'Both string are empty';
}

更进一步,这段代码

if (strcmp($firstString,$secondString) !== 0) {
    sameVar($firstString,$secondString);
} else {
    diffVar($firstString,$secondString);
}

必须改写为

if (strcmp($firstString,$secondString) === 0) {  // === instead of !==
    sameVar($firstString,$secondString);
}

因为只有当字符串相同时,strcmp才会返回0

作为旁注 - 如果您的函数不需要参数,请不要传递参数:

if (strcmp($firstString,$secondString) === 0) {
    sameVar();
} else {
    diffVar();
}

// where `sameVar` and `diffVar` are:
function sameVar() {
    echo "Both strings similar";
}

function diffVar() {
    echo "Both strings do not the same";
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。