Подтвердить что ты не робот

PHP, если in_array() как получить ключ?

Борьба с крошечной проблемой.

У меня есть массив:

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

Я проверяю, установлено ли заданное значение в массиве.

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

Дело в том, что когда он находит значение 5 в массиве, мне действительно нужен ключ для работы в моем "делать что-то".

В этом случае мне нужно установить:

$key = 3;

(ключ от найденного значения in_array).

Любые предложения?

4b9b3361

Ответ 1

array_search() - это то, что вы ищете.

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

Ответ 2

Если вам нужен только ключ первого совпадения, используйте 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

Возможно, вы захотите использовать array_search вместо этого, который возвращает false, если значение не найдено и индекс, если значение найдено. Ознакомьтесь с описанием здесь

Ответ 5

Вы можете попробовать

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

Таким образом, вы знаете, что он существует, и если он этого не делает, он не вызывает уведомления, предупреждения или фатальные ошибки script в зависимости от того, что вы делаете с этим ключом после этого.

Ответ 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] }}">