2012-03-17 15 views
0

私はGoogleとPHPのドキュメントを検索しましたが、これに対する解決策はまだ見つかりません。例えば。私は、探してるものをそのためのキーがに最も近いかを決定するために、配列のすべてのキーにはstrstr()を実行すると仮定よう:PHPで配列キーを選択する

for($i=0;$i<count($array);$i++) { 
    if(@strstr(key($array[$i]), "$search")) { 
    print "Found: ". key($array[$i]). "<br>"; 
    } 
} 

「キー($配列[$ i]は) "は、strstr()を実行する要素として配列キーを選択するために必要な関数または手段のプレースホルダーです。

誠にありがとうございます。

答えて

1
foreach ($array as $key => $value) 
{ 
    if(strstr($key, $search)) 
    { 
     print "Found: ". $key. "<br>"; 
    } 
} 
2

使用キー、値ペアを反復処理するforeachの

foreach($array as $key=>$value) { 
    if(@strstr($key, "$search")) { 
    print "Found: ". $key. "<br>"; 
    } 
} 

詳細参照:コメントに答えるために http://php.net/manual/en/control-structures.foreach.php

更新:

あなたは

array_keysを使用することができます - すべてのキーや配列

のキーのサブセットを返します。

http://php.net/manual/en/function.array-keys.php

+0

ありがとうございます!しかし好奇心のために、代わりにforループを使ってこれを達成する方法がありますか? – user784446

+0

@ user784446最新の回答を見る – Pheonix

1

これはそれを行うだろう...

$found = array_filter(
        array_keys($array), 
        function($key) use ($search) { 
         return strpos($key, $search) !== FALSE; 
        }); 

CodePad

$foundは、部分文字列を含むすべてのキーの配列で、$searchになります。

文字列が他の文字列内に存在するかどうかを調べるだけの場合は、strpos()を使用します。

+1

@Basti Way ahead of you :) – alex

0

別のオプションは、1つのステップで目的のキーを引き出すことです。 preg_grep()を使用します。

$keys = preg_grep('/'.preg_quote($search, '/').'/', array_keys($array)); 

foreach ($keys as $key) { 
    echo "Found $key<br>"; 
}