Можно ли получить ключ, когда он найден в массиве?

Есть ли лучший способ получить ключ из массива, если он найден в поиске без учета регистра?

Логика кода мне нужна, как показано ниже:

<?php
$search = "foo";
$array = array('Foo' => 1, 'Boo' => 2);

if (array_key_exists($search, array_map('strtolower', $array)))
return "Foo";
?>

Подход я хотел бы улучшить:

<?php
if (array_key_exists($search, array_map('strtolower', $array)))
{
foreach($array as $k => $v)
{
if ($search == strtolower($k))
return $k;
}
unset ($k, $v);
}
?>

0

Решение

$a = ['a' => '1', 'b' => '2', 'C' => 3];
$search = 'c';

$result = array_filter($a, function($k) use ($search) {
return strtolower($k) != $search;
}, ARRAY_FILTER_USE_KEY);

var_dump($result);
2

Другие решения

$search = "foo";
$array = array('Foo' => 1, 'Boo' => 2);

function get_value($array, $search) {
foreach($array as $key => $value) {
if($search === strtolower($key)) {
return $value;
}
}

return null;
}

function get_key($array, $search) {
foreach($array as $key => $value) {
if($search === strtolower($key)) {
return $key;
}
}

return false;
}

echo get_value($array, $search);
var_dump(get_key($array, $search));

Я считаю, что вы ищете этот подход.

Надеюсь, поможет!

0