PHP strcmp() 给我数字 '6' 作为输出
PHP strcmp() is giving me number '6' as output
我正在比较两个短字符串(一些包含数字,一些包含字母,一些是混合的)与 strcmp() 期望输出为 0、-1 或 1(或者我会以不同的方式说:肯定有是 1 场比赛,但它始终是 'no match',即始终不是 0) 但出于某种奇怪的原因,无论如何我都会得到“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;
}
}
我正在寻找一个解决方案,我在 Whosebug 上找到了一个假设的解决方案,它基本上将“(string)”的文件前缀添加到两个比较的字符串,但它没有任何效果,输出仍然很奇怪 '6 ' - 有人知道为什么并且可以帮助我吗?
已解决
发生了 2 件事:
- 我错误地认为输出只能是 0、1 或 -1
- 我错误地向其中一个字符串输入了错误的变量:-(
...所以现在一切都符合预期,感谢@Erhan 的解释(上面的代码已经修复,所以它实际上显示了功能)
您的输出不必完全是 1 或 -1。如果它们相等,则输出将为零 (0),否则输出将为 <0 或 >0
来自 php.net
Returns < 0 if str1 is less than str2; > 0 if str1 is greater than
str2, and 0 if they are equal.
我正在比较两个短字符串(一些包含数字,一些包含字母,一些是混合的)与 strcmp() 期望输出为 0、-1 或 1(或者我会以不同的方式说:肯定有是 1 场比赛,但它始终是 'no match',即始终不是 0) 但出于某种奇怪的原因,无论如何我都会得到“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;
}
}
我正在寻找一个解决方案,我在 Whosebug 上找到了一个假设的解决方案,它基本上将“(string)”的文件前缀添加到两个比较的字符串,但它没有任何效果,输出仍然很奇怪 '6 ' - 有人知道为什么并且可以帮助我吗?
已解决
发生了 2 件事: - 我错误地认为输出只能是 0、1 或 -1 - 我错误地向其中一个字符串输入了错误的变量:-(
...所以现在一切都符合预期,感谢@Erhan 的解释(上面的代码已经修复,所以它实际上显示了功能)
您的输出不必完全是 1 或 -1。如果它们相等,则输出将为零 (0),否则输出将为 <0 或 >0 来自 php.net
Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.