我正在比较两个短字符串(一些包含数字,一些包含字母,一些是混合的)与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的解释(上面的代码已经修复,所以它实际上显示了功能的代码)
答案 0 :(得分:1)
您的输出不一定必须是1或-1。如果它们是相等的,则输出将为零(0),如果不输出则将为&lt; 0或&gt; 0 来自php.net
返回&lt;如果str1小于str2,则为0; &GT;如果str1大于,则为0 str2,如果它们相等则为0。