【问题标题】:How to find index of an array when I know only part of string? [duplicate]当我只知道字符串的一部分时如何找到数组的索引? [复制]
【发布时间】:2019-12-02 07:03:34
【问题描述】:

当我只知道字符串的一部分时,我试图找到一个可以在数组中找到索引的函数。
只有在我知道整个字符串的情况下,函数 array_search 才会返回索引。
当我只有一个数组项的子字符串时,如何获取索引/键?

$array = array(0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants');

echo array_search('red', $array);

我需要回显 1。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    您还可以使用 preg_grep,它是数组的正则表达式。
    这将返回数组中所有红色的项目。

    而且由于它是正则表达式,您还可以将模式设置为不包括“蓝色乡下人裤子”,strpos 的问题会稍微多一些。

    $return = preg_grep("/red/", $array);
    
    var_dump($return); 
    /*
    array(2) {
      [1]=>
      string(9) "red pants"
      [4]=>
      string(11) "red t-shirt"
    }
    */
    

    https://3v4l.org/IVUaJ

    如果您想排除蓝色的乡下人裤子,请使用图案/\bred\b/
    https://3v4l.org/o9rGi

    要让图案拾取“红色”、“红色”、“红色”,然后使用/\bred\b/i

    注意到你想要钥匙作为回报。只需执行array_keys($return);,您将获得提到“红色”的键。

    【讨论】:

      【解决方案2】:

      我从n-regen 的 php.net 中获取了这个函数,他从针的一部分中找到了数组的值。 然后使用找到的值,可以使用array_search获取索引的值。

      function array_find($needle, $haystack)
      {
         foreach ($haystack as $item)
         {
            if (strpos($item, $needle) !== FALSE)
            {
               return $item;
               break;
            }
         }
      }
      
      
      $array = array(0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants');
      
      
      $completValue = array_find('red', $array);
      echo array_search($completValue , $array);
      

      【讨论】:

        【解决方案3】:

        使用foreach() 对数组进行迭代,并使用 strpos() 在数组元素中搜索您的指针。

        $array = [0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants'];
        
        foreach ($array as $key => $value) {
            if (strpos($value, 'red') !== false) {
                echo "Key={$key}, Value: {$value}";
                break;
            }
        }
        

        工作demo

        【讨论】:

        • 这正是我所需要的。非常感谢:-)
        猜你喜欢
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-09
        • 2011-04-24
        • 2015-10-09
        • 2012-05-04
        • 2021-10-01
        相关资源
        最近更新 更多