PHP字符串比较,===或strcmp不起作用

时间:2013-07-31 10:09:22

标签: php string-comparison strcmp

我有一个哈希映射,其中包含某些键,这些键是其值的排序版本。例如,

$hash = array( "abc" => "cab",
               "aas" => "sas"
        );

我还有一个排序字符串数组($ sorted_words),我想将所有这些字符串与上面的哈希映射的键进行比较,如果找到匹配项,则将相应的值存储在字符串中。我使用===和strcmp(),但都不起作用。它总是说字符串不匹配。这是我的代码:

foreach($sorted_words as $sc) {
    foreach($hash as $key => $value) {
        if(strcmp($sc, $key) == 0) { // or if($sc === $key)
            $string_match .= $value; // store the corresponding value for the matched key.
        }
    }
}

但是比较失败,因为strcmp()总是返回大于1而'==='永远不会返回true。任何人都可以说出错了吗?我很确定会有匹配的字符串。

2 个答案:

答案 0 :(得分:1)

试试这个:

$string_match  = "";
foreach($sorted_words as $sc) {
   if(array_key_exists($sc, $hash)){
      $string_match .=  $hash[$sc];
   }

}

答案 1 :(得分:0)

当程序员卡住时,他们必须开始调试

foreach($sorted_words as $sc) {
    foreach($hash as $key => $value) {
        if($sc === $key) {
            $string_match .= $value; key.
        }
        var_dump($sc, $key, $sc === $key);
    }
}

然后研究输出。
这是确定的唯一方法,,如果有任何匹配的字符串。
虽然你目前的“非常肯定”只是猜测。