【问题标题】:PHP if in_array() how to get the key as well?PHP if in_array() 如何获取密钥?
【发布时间】:2012-08-03 22:09:47
【问题描述】:

为一个小问题苦苦挣扎。

我有一个数组:

Array
(
    [0] => 
    [6] => 6
    [3] => 5
    [2] => 7
)

我正在检查数组中是否有设定值。

if(in_array(5, $array)) {
//do something
} else {
// do something else
}

问题是,当它在数组中找到值 5 时,我真的需要在我的“做某事”中使用密钥。

在这种情况下我需要设置:

$key = 3;

(来自数组中找到的值的键)。

有什么建议吗?

【问题讨论】:

  • 我在这里是@DaveRandom,array_search 是你需要的,而不是in_array。一个空数组是false btw。
  • 哈哈哈..你们太棒了!!非常感谢;)

标签: php arrays


【解决方案1】:

array_search() 就是你要找的东西。

if (false !== $key = array_search(5, $array)) {
    //do something
} else {
    // do something else
}

【讨论】:

    【解决方案2】:

    也许您想使用 array_search 代替,如果未找到该值,则返回 false,如果找到该值,则返回索引。查看描述here

    【讨论】:

      【解决方案3】:

      如果只需要第一个匹配的key,使用array_search()

      $key = array_search(5, $array);
      if ($key !== false) {
          // Found...
      }
      

      如果您需要与特定值匹配的所有条目的键,请使用array_keys()

      $keys = array_keys($array, 5);
      if (count($keys) > 0) {
          // At least one match...
      }
      

      【讨论】:

        【解决方案4】:

        你可以试试

        if(in_array(5, $array))
        {
            $key = array_search(5, $array);
            echo $key;
        }
        

        这样你就知道它存在,如果它不存在,它不会导致通知、警告或致命的脚本错误,具体取决于你之后对该密钥的操作。

        【讨论】:

        • 虽然这有效,但您需要执行两次搜索。我想搜索然后测试是否找到 $key $key = array_search(5, $array); if ($key !== false) {
        【解决方案5】:

        你可以用这个http://www.php.net/manual/en/function.array-search.php

        $key = array_search(5, $array)
        if ($key !== false) {
        ...
        

        【讨论】:

          【解决方案6】:

          以防万一有人需要它在数组中。我的情况是这样的:

          我有一个这样的数组:

          $myArray =
          
          array:3 [▼
            0 => array:3 [▼
              0 => 2
              1 => 0
              2 => "2019-07-21 23:59:59"
            ]
            1 => array:3 [▼
              0 => 3
              1 => 2
              2 => "2019-07-21 23:59:59"
            ]
            2 => array:3 [▼
              0 => 1
              1 => 1
              2 => "2019-07-21 23:59:59"
            ]
          ]
          

          还有一个像这样的(对象数组):

          $Array2 = 
          
          Collection {#771 ▼
            #items: array:12 [▼
              0 => {#1047 ▼
                +"id": 2
                +"name": "demografico"
                +"dict_key": "demographic"
                +"component": "Demographic"
                +"country_id": null
                +"created_at": null
                +"updated_at": null
              }
              1 => {#1041 ▶}
              2 => {#1040 ▶}
              etc...
          

          作为 OP,我必须使用数组中某个值的键“做某事”(使用 html php 模板中的值,我的情况是带有刀片的 Laravel)。对于我的代码,我必须使用这个:

          foreach($Array2 as $key => $item)
              if(false !== $key = array_search($item->id, array_column($myArray, 0))
              // Note that $key is overwritten
                  <input type="number" class="form-control" id="{!! $item->id !!}" value="{{ $myArray[$key][1] }}">
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-11-29
            • 1970-01-01
            • 2014-08-16
            • 1970-01-01
            • 1970-01-01
            • 2013-03-30
            • 2011-03-20
            • 1970-01-01
            相关资源
            最近更新 更多