PHP 如果 in_array() 如何获取密钥


PHP if in_array() how to get the key as well?

正在努力解决一个小问题。

我有一个数组:

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

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

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

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

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

$key = 3;

(找到的值中的键in_array)。

有什么建议吗?

array_search()就是你要找的。

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

如果只需要第一个匹配项的键,请使用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...
}
你可以

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

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

试试

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

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

也许你想改用array_search,如果未找到值,则返回 false,如果找到值,则返回索引。在此处查看说明

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

我有一个这样的数组:

$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] }}">