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

Compare 2 strings using empty and strcmp

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

    $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);
    } 

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

if (empty($firstString, $secondString))

但是当我重新加载页面时什么也没有出现。还在 VSCode

中给我一个红点

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

编辑:

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

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

   <?php

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

    function sameVar() {
        echo "Both $firstString and $secondString match";
    }

    function diffVar() {
        echo "Both $firstString and $secondString do not match";
    }

    if (empty($firstString) && empty($secondString)) {
        echo "The Strings are empty";
    } else {
        echo "The Strings are not empty <br/>";

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

            echo "<p>Either the $firstString variable and the $secondString variable does not contain a value so the two strings cannot be compared.</p>";
        }
    }

    // need to include
    // else { echo "<p>Either the $firstString variable and the      $secondString variable does not contain a value so the two strings cannot be compared. </p>" }
    // must be included at the end of the script 

?>

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

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

   ...
}

此外,您可能还想阅读有关 logical operators 的内容。

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

由于empty只接受一个参数 (manual),所以不能像empty($firstString, $secondString).[=20=那样使用它]

所以,如果你要检查 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);
} else {
    diffVar($firstString, $secondString);
}

因为strcmp returns 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";
}