2012-01-19 6 views
0

일부 검색을 수행했지만 유사한 질문을 발견했지만 대부분 문자열 키를 가지고 숫자가 아닙니다.키워드 검색 키 배열 검색

샘플 배열은 다음과 같이 실행

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을 사용하려고, 불행하게도, 난 그냥 ... 내게 너무 어려운 것으로 입증되었습니다 정규식과 리터럴 문자열 검색을 이해할 수없는 것 : {PHP 5.3은 수의로

답변

2

당신이 뭔가 싶어 :

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

그건 엄격한 기준 아래 경고를 던질 것 같아요. 'array_shift()'는 배열 참조를 인자로 취하고 함수의 출력을 전달합니다. –

+0

글쎄, @ 마이클이 맞다면, 내가 찾고있는 것을 했어. 어떻게 엄격한 표준을 따르 겠어? 그리고 이것은 PHP 5.3에서 작동합니까? – lemonpole

+1

@lemonpole'preg_grep()'의 출력을 변수에 저장하고, 그 변수를'preg_grep()'호출 대신에'array_shift()'의 인자로 사용하십시오. –

2

$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