2011-09-18 15 views
27

だから、この配列内の 'blah'の位置を取得する必要があります(位置は常に同じではありません)。たとえば:配列内のキーの位置を取得する方法

$array = (
    'a' => $some_content, 
    'b' => $more_content, 
    'c' => array($content), 
    'blah' => array($stuff), 
    'd' => $info, 
    'e' => $more_info, 
); 

だから、私は、アレイ内で「何とか」キーが配置されている場所の数を返すことができるようにしたいと思います。このシナリオでは、3を返します。これをすばやく行うにはどうすればよいですか? $ array配列にはまったく影響を与えません。

答えて

62
$i = array_search('blah', array_keys($array)); 
+0

ありがとうございます。私はもともとパラメータを元に戻したと思いますが、それを修正しました。他の方法で試して、エラーを取得していた。しかし今は完璧です。ありがとう:) – SoLoGHoST

+0

時々答えはとても明白です... :) –

-3

ユーザーarray_searchdoc)です。すなわち、 `$インデックス= array_search

+3

いいえ! docのように:ユーザーが尋ねた**キー**ではなく、指定された**値**の配列を検索します。 –

0

$keys=array_keys($array);あなたにそう$array

のキーを含む配列を与えるだろう( '何とか'、$配列)は、array_search('blah', $keys);$keysであなたblahの指標を与え、そのためだろう、$array

3

あなたが知っている場合は、キーが存在している:

PHP 5.4(Demo):

echo array_flip(array_keys($array))['blah']; 

PHP 5.3:

$keys = array_flip(array_keys($array)); 
echo $keys['blah']; 

あなたはissetに確認することができ、キーが存在するか分からない場合は、次の

$keys = array_flip(array_keys($array)); 
echo isset($keys['blah']) ? $keys['blah'] : 'not found' ; 

これは単にarray_searchのようですが、すでに存在しているマップを使用しています任意の配列の内部にあります。 array_searchよりも実際に優れているかどうかは言えませんが、これはシナリオによって異なる可能性があります。

+0

ええ、私はキーが常に存在するという事実を知っています!その場合、 'array_search'を使うよりも速くなりますか? – SoLoGHoST

+0

このように答えてください: 'array_flip'が' array_search'より速い限り、それは:)です。キー検索自体は 'array_search'よりも高速です。 – hakre

+0

私はこのアイデアが気に入っていますが、array_searchは実際には私のテスト(少なくともPHP 5.3では)により高速です。 –

関連する問題