【问题标题】:Find various values in array?在数组中查找各种值?
【发布时间】:2012-07-23 12:17:35
【问题描述】:

我想查找数组中多个值中的任何一个的第一次出现。

$sentence = array(I, want, to, go, to, the, market);
if(in_array(array('swim','fly','go'), $sentence)) {
    // Should return KEY = 3 as 'go' was found in the third key of the array
    }

我确定这一定是相当普遍的,怎么做?

【问题讨论】:

标签: php arrays


【解决方案1】:

http://tr.php.net/manual/en/function.array-keys.php

我想更具体地说,您正在寻找这种类型的功能?

<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));

$array = array("color" => array("blue", "red", "green"),
               "size"  => array("small", "medium", "large"));
print_r(array_keys($array));
?>

上面的例子会输出:

Array
(
    [0] => 0
    [1] => color
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => color
    [1] => size
)

【讨论】:

    【解决方案2】:

    首先你应该正确阅读 in_array 函数的手册,你以错误的顺序传递参数

    $sentence = array(I, want, to, go, to, the, market);
    
     $found_key = array();   
     foreach($sentence as $key => $word)
        {
          if(in_array($word,array('swim','fly','go')))  
           { $found_keys[] = $key;}
        }
       print_r($found_keys);
    

    我希望这是你需要的

    【讨论】:

    • 这样做的问题是,如果存在超过 1 个值,它将返回它在循环中找到的第一个值,即使另一个值可能具有较低的键。
    • 但我猜这个问题即将找到第一次出现。
    【解决方案3】:

    请使用此函数array_search如果在数组中找到元素,它将返回元素的键

    例子

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

    【讨论】:

    • array_search 只搜索一个值,我需要一次搜索多个值,我可以将它与循环一起使用,但我希望已经有一个 php 函数可以解决问题
    【解决方案4】:

    array_keys 会很好用。

    $keys = array_keys($sentence,array('swim','fly','go');
    

    那么 $keys 将是一个在 $sentence 中出现游泳、飞行和去的键的列表

    正如下面的代码将返回一个具有空值的键列表

    $array = array('one','','three');
    $keys = array_keys($array,"");
    

    【讨论】:

      【解决方案5】:
      function find_in_array($needles,$array) {
          $pos = false;
          foreach ($needles as $key => $value) {
              if (in_array($value, $array)) {
                  if(!$pos || array_search($value, $array) < $pos) {
                      $pos = array_search($value, $array);
                      }
                  }
              }
              return $pos;
          }
      
      echo find_in_array($values,$sentence);
      

      这是我现在正在使用的,我正在按照 Darian Brown 的建议测试 array_keys

      【讨论】:

        猜你喜欢
        • 2020-07-27
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多