我遇到了不敏感的array_keys和in_array的问题...... 我正在开发一个翻译,我有这样的东西:
$wordsExample = array("example1","example2","example3","August","example4");
$translateExample = array("ejemplo1","ejemplo2","ejemplo3","Agosto","ejemplo4");
function foo($string,$strict=FALSE)
{
$key = array_keys($wordsExample,$string,$strict);
if(!empty($key))
return $translateExample[$key[0]];
return false;
}
echo foo('example1'); // works, prints "ejemplo1"
echo foo('august'); // doesnt works, prints FALSE
我用in_array测试了相同的结果......:
function foo($string,$strict=FALSE)
{
if(in_array($string,$wordsExample,$strict))
return "WOHOOOOO";
return false;
}
echo foo('example1'); //works , prints "WOHOOOOO"
echo foo('august'); //doesnt works, prints FALSE
答案 0 :(得分:1)
创建数组并使用strtolower
找到键:
$wordsExample = array("example1","example2","example3","August","example4");
$lowercaseWordsExample = array();
foreach ($wordsExample as $val) {
$lowercaseWordsExample[] = strtolower($val);
}
if(in_array(strtolower('august'),$lowercaseWordsExample,FALSE))
return "WOHOOOOO";
if(in_array(strtolower('aUguSt'),$lowercaseWordsExample,FALSE))
return "WOHOOOOO";
另一种方法是编写一个不区分大小写的新in_array
函数:
function in_arrayi($needle, $haystack) {
return in_array(strtolower($needle), array_map('strtolower', $haystack));
}
如果您希望它使用更少的内存,最好使用小写字母创建单词数组。
答案 1 :(得分:0)
我创建了一个小函数,以便测试干净的URL,因为它们可以是大写,小写或混合:
function in_arrayi($needle, array $haystack) {
return in_array(strtolower($needle), array_map('strtolower', $haystack));
}
这样很容易。