因为PHP是弱类型语言,常常会发生许多意想不到的问题,所以,我们再次一一细数这些我们踏过的坑!!!
1)
foreach中自动回将key为数值的转化成整型,造成无法匹配
function translate($keyword) { $trMap = [ 'google' => '谷歌', '360' => '360', ]; foreach ($trMap as $key => $value) { if (strpos($keyword, $key) !== false) { return $value; } } return '其他'; } echo translate("google") . PHP_EOL; echo translate('360') . PHP_EOL; 结果: //谷歌 //其他
修复bug:
function translate($keyword) { $trMap = [ 'google' => '谷歌', '360' => '360', ]; foreach ($trMap as $key => $value) { if (strpos($keyword, (string)$key) !== false) { return $value; } } return '其他'; } echo translate("google") . PHP_EOL; echo translate('360') . PHP_EOL; 结果: //谷歌 //360
建议: 如果确定变量的类型,一定要严格转化之后 ,再进行操作
2)