62

为一个小问题而苦苦挣扎。

我有一个数组:

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

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

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

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

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

$key = 3;

(来自找到的值 in_array 的键)。

有什么建议么?

4

6 回答 6

124

array_search()就是你要找的。

if (false !== $key = array_search(5, $array)) {
    //do something
} else {
    // do something else
}
于 2012-08-06T22:17:44.180 回答
18

如果您只需要第一个匹配项的密钥,请使用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...
}
于 2012-08-06T22:18:44.153 回答
4

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

$key = array_search(5, $array)
if ($key !== false) {
...
于 2012-08-06T22:19:07.230 回答
2

你可以试试

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

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

于 2012-08-06T22:19:07.023 回答
1

也许您想改用 array_search,如果未找到该值,则返回 false,如果找到该值,则返回索引。看看这里的描述

于 2012-08-06T22:17:52.353 回答
0

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

我有一个这样的数组:

$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] }}">
于 2019-07-22T14:17:40.987 回答