PHP strcmp()给了我数字' 6'作为输出

时间:2018-04-10 17:33:20

标签: php regex strcmp

我正在比较两个短字符串(一些包含数字,一些包含字母,一些是混合的)与strcmp()期望输出将是0,-1或1(或者我会说不同:肯定必须是1匹配,但总是“没有匹配”,这总是不是0)但是由于一些奇怪的原因我得到了#6;' 6'无论如何,这是我的代码:

$_delim = '</div>';
$_str = '';
$_struct = explode($_delim, file_get_contents($_pthPHP.'_sets.php'));
$_c = count($_struct);
$_patternIMG = '/data-img="(.*?)"/';
$_patternLIKTYPE = '/data-link-type="(.*?)"/';

for ($i = 0; $i < ($_c - 1); $i++)
{
    preg_match($_patternIMG, $_struct[$i], $matchesA); // DATA-IMG = NAZOV SETU
    $_iteratedSet = explode('<?= $def_path ?>', $matchesA[1]);
    $_actualSet = explode('-', $verzia);

    $_strA = trim($_iteratedSet[1]);
    $_strB = trim($_actualSet[0]);

    echo strcmp((string)$_strA, (string)$_strB).'<br />'; // TESTING COMPARISON VALUE

    if(strcmp($_strA, $_strB) == 0)
    {
        preg_match($_patternLIKTYPE, $_struct[$i], $matchesB); // DATA-LINK-TYPE
        $_linkType = $matchesB[1];
        echo 'link type = '.$_linkType;
        break;
    }
}

我正在寻找一个解决方案,我在StackOverflow上找到了一个假定的解决方案,它基本上添加了文件前缀&#39;(string)&#39;比较两个字符串,但它没有任何影响,输出仍然是那么奇怪的&#39; 6&#39; - 有人知道为什么,可以帮助我吗?

解决

发生了两件事: - 我错误地认为输出只能是0,1或-1 - 我错误地将错误的变量输入到其中一个字符串中: - (

...所以现在一切都如预期的那样,而不是@Erhan的解释(上面的代码已经修复,所以它实际上显示了功能的代码)

1 个答案:

答案 0 :(得分:1)

您的输出不一定必须是1或-1。如果它们是相等的,则输出将为零(0),如果不输出则将为&lt; 0或&gt; 0 来自php.net

  

返回&lt;如果str1小于str2,则为0; &GT;如果str1大于,则为0   str2,如果它们相等则为0。