我有一个哈希映射,其中包含某些键,这些键是其值的排序版本。例如,
$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。有人能说出出了什么问题吗?我很确定会有匹配的字符串。
试试这个:
$string_match = "";
foreach($sorted_words as $sc) {
if(array_key_exists($sc, $hash)){
$string_match .= $hash[$sc];
}
}
当程序员陷入困境时,他们必须开始调试
foreach($sorted_words as $sc) {
foreach($hash as $key => $value) {
if($sc === $key) {
$string_match .= $value; key.
}
var_dump($sc, $key, $sc === $key);
}
}
然后研究输出
这是唯一可以确定的方法,是否有匹配的字符串
而你目前的"相当确定"只是猜测。