【问题标题】:Array_Search For Multiple Same Elements [duplicate]Array_Search 搜索多个相同元素
【发布时间】:2020-07-27 03:10:24
【问题描述】:

有一个类似 $arr = array(1,2,3,3,3,4,5) 的数组。如果我们想获取所有值为 3 的索引怎么办?

我使用了array_search(3, $arr),但它只返回一个整数和第一个值为“3”的索引

我们如何获得一个像$indexes = array(2,3,4) 这样的数组来显示所有值为 3 的索引?

我们将非常感谢您的帮助

【问题讨论】:

  • 一个 Foreach 循环?
  • 你肯定必须在这里编写某种循环。到目前为止,您尝试过什么?
  • 这个其实在array_search manual page里有解释——如果多次在haystack中找到needle,则返回第一个匹配的key。要返回所有匹配值的键,请使用带有可选 search_value 参数的 array_keys()。

标签: php arrays


【解决方案1】:

您可以使用array_keys 搜索值PHP Doc

Demo

array_keys($arr,3)

array_keys() 从数组中返回键、数字和字符串。

如果指定了 search_value,则只有该值的键是 回来。否则,返回数组中的所有键。

【讨论】:

    【解决方案2】:

    使用该解决方案,您可以创建复杂的过滤器。在这种情况下,我们将每个值都比较为第三个(=== 运算符)。过滤器返回索引,当比较为真时,将被丢弃。

    $a = [1,2,3,4,3,3,5,6];
    
    $threes = array_filter($a, function($v, $k) {
      return $v === 3 ? $k : false; },
      ARRAY_FILTER_USE_BOTH
    );
    

    $threes 是一个包含所有值为 3 的键的数组。

    数组(3) { 2, 4, 5 }

    【讨论】:

      【解决方案3】:

      你可以使用array_keys:

      foreach (array_keys($arr) as $key) if ($arr[$key] == 3) $result[] = $key;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-08
        • 2016-05-22
        • 1970-01-01
        • 2013-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多