2017-01-13 3 views
0

は、それが大文字と小文字を区別しない検索で発見された場合、配列からキーを取得するための良い方法はありますか?それが配列で発見された場合、キーを取得することはできますか?

私は必要なコードのロジックは、以下のようなものです:

<?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

アレイは、同様多次元ことができますか? – Perumal

+0

いいえ、私は1次元配列ソリューションのみを探しています。おかげ – zee

+0

'場合(array_key_exists($検索、array_mapを( 'strtolower'、array_keys($配列))))' –

答えて

0
$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)); 

私はあなたがこのアプローチを探していると信じています。

希望すると助かります!

2
$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); 
関連する問題