2

我对不敏感的 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
4

2 回答 2

1

创建数组并使用 with 找到键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));
}

如果您希望它使用更少的内存,最好使用小写字母创建单词数组。

于 2012-08-21T06:36:43.977 回答
0

我创建了一个小函数来测试干净的 URL,因为它们可以是大写、小写或混合的:

function in_arrayi($needle, array $haystack) {

    return in_array(strtolower($needle), array_map('strtolower', $haystack));

}

这种方式很容易。

于 2012-08-21T06:56:00.810 回答