2012-01-19 7 views
0

私はいくつかの検索を行い、同様の質問をしましたが、ほとんどの文字列キーは数値ではありません。基本的にこれは私が達成したいものです。キーワードリターンキーの検索配列

サンプルArrayこのような何か実行

Array (
     [0] => comments=DISABLED 
     [1] => img_carousel=red.jpg,yellow.png,blue.jpg 
     [2] => twitter=http://www.twitter.com 
) 

$img_carousel = explode('=', $arr[array_search('img_carousel', $arr)]); 

返します。

Array (
     [0] => img_carousel 
     [1] => red.jpg,yellow.png,blue.jpg 
) 

はしかし、それはしていません0/FALSEだけを返します。 array_searchが文字列内のキーワードではなく正確な一致を検索するので、私はそれを推測していますか?

私は...残念ながら、私は正規表現を理解するように見えることはできませんし、文字列リテラルを検索することは、私にとって非常に困難であることが証明され、preg_grepを使用しようとしました:{

答えて

2

あなたはこのような何かしたい:

$img_carousel = explode('=', array_shift(preg_grep('/img_carousel=/', $arr))) 
+0

それは厳しい基準の下で警告を投げるだろう、と私は思う。 'array_shift()'は配列参照を引数としてとり、関数の出力を渡します。 –

+0

よく、それは私が探していたことをしました、しかし、もし@Michaelが正しいなら、あなたはどのようにStrictの基準に準拠しますか?そして、これはPHP 5.3で動作しますか? – lemonpole

+1

@lemonpole 'preg_grep()'の出力を変数に格納し、その変数を 'preg_grep()'の代わりに 'array_shift()'の引数として直接使用します。 –

2

PHP 5.3の時点であなたは可能性がありこのサンプルに従ってください。

$result = array_filter($arr, function($e) { 
    return strpos($e, 'img_carousel') !== false; 
}); 

か古いバージョンを使用する場合:

function ifElementContainsImgCarousel($e) 
{ 
    return strpos($e, 'img_carousel') !== false; 
} 
$result = array_filter($arr, 'ifElementContainsImgCarousel'); 
1

をあなたのキーワードを含む要素を取得するためにarray_filterを使用することができます。

array_filter($sample_array, function($var) use ($keyword) {return strpos($var, $keyword) !== false;}) 
+0

あなたのサンプル中の '$のkeyword'どのようなものですか? – zerkms

+0

@zerkms質問タイトルのキーワードです。「img_carousel」のようなものです。 – xdazz

+0

匿名関数の変数スコープにどのように渡す必要がありますか? – zerkms