array_search() 的不区分大小写版本

发布于 2024-10-02 17:09:25 字数 174 浏览 5 评论 0原文

我有一个像这样的数组:

$array = ['oooo', 'no', 'mmmm', 'yes']; 

我想搜索单词“yes”。我了解 array_search(),但我也想匹配“yes”、“Yes”和“YES”。

我该怎么做?

I have an array like this:

$array = ['oooo', 'no', 'mmmm', 'yes']; 

I'd like to search for a word "yes". I know about array_search(), but I'd like to match "yes", "Yes" and "YES" as well.

How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓝天白云 2024-10-09 17:09:25
array_search(strtolower($search), array_map('strtolower', $array));
array_search(strtolower($search), array_map('strtolower', $array));
半窗疏影 2024-10-09 17:09:25

您可以使用 in_array() 代替 array_search()

$response = in_array('yes', array_map('strtolower', $array));

You can use in_array() instead of array_search().

$response = in_array('yes', array_map('strtolower', $array));
江湖彼岸 2024-10-09 17:09:25

对于迭代任务来说,转换干草堆中所有值的大小写是不必要的,而且效率低下,一旦找到合格的值,迭代任务就可能停止。使用条件中断循环。 演示

$array = ['oooo', 'no', 'mmmm', 'yes'];
$needle = 'Yes';

foreach ($array as $i => $v) {
    if (stripos($v, $needle) !== false) {
        $found = $i;
        break;
    }
}
echo $found ?? 'Not found';
// output: 3

如果您想最小化全局范围的变量,请在 立即调用函数表达式演示

echo (function($haystack, $needle) {
          foreach ($haystack as $i => $v) {
              if (stripos($v, $needle) !== false) {
                  return $i;
              }
          }
          return null;
      })($array, $needle) ?? 'Not found';
// output: 3

It is unnecessary and inefficient to convert the case of all values in the haystack for an iterative task which may stop as soon as a qualifying value is found. Use a conditionally broken loop. Demo

$array = ['oooo', 'no', 'mmmm', 'yes'];
$needle = 'Yes';

foreach ($array as $i => $v) {
    if (stripos($v, $needle) !== false) {
        $found = $i;
        break;
    }
}
echo $found ?? 'Not found';
// output: 3

If you want to minimize globally scoped variables, perform the loop inside of an Immediately Invoked Functional Expression. Demo

echo (function($haystack, $needle) {
          foreach ($haystack as $i => $v) {
              if (stripos($v, $needle) !== false) {
                  return $i;
              }
          }
          return null;
      })($array, $needle) ?? 'Not found';
// output: 3
夜光 2024-10-09 17:09:25

编辑:抱歉,我看到它是为了值,请参阅: http ://php.net/manual/en/function.array-change-key-case.php#88648


对于键:

$a = array('YES', 'yes', 'Yes'); 
$b = array_change_key_case($a, CASE_LOWER); 
$f = array_search(strtolower($search), $b);

Edit: Sorry, I see it's for values, see: http://php.net/manual/en/function.array-change-key-case.php#88648


For keys:

$a = array('YES', 'yes', 'Yes'); 
$b = array_change_key_case($a, CASE_LOWER); 
$f = array_search(strtolower($search), $b);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文