2012-09-27 5 views
0

주어진 문자열에 stripos()의 미리 정의 된 하위 문자열이 들어 있는지 확인하고 하위 문자열의 키를 반환하는 간단한 함수를 작성했습니다. 사실 스크립트의 다른 부분에서 사용하려면 키 문자열이 필요합니다.배열에서 정의 된 하위 문자열 찾기 및 PHP에서 키 반환

현재 배열 전체를 파싱하고 있기 때문에 더 좋은 방법이 있는지 궁금합니다. 일치하는 항목이 발견되면 결과를 반환합니다. 배열이 커지면 느려집니다.

$needles = array(
    'a' => 'ab', 
    'b' => 'bc', 
    'c' => 'cd', 
    'd' => 'de', 
    'e' => 'ef' 
); 
echo get_key('cd', $needles) . '<br />'; 
echo get_key('my_de_string', $needles) . '<br />'; 
echo get_key('e_ab', $needles) . '<br />'; 

function get_key($mystring, $needles) { 
    foreach ($needles as $key => $needle) 
    { 
     if ((stripos($mystring, $needle)) !== false) 
     { 
      return $key; 
     } 
    } 
} 

죄송합니다. 이전에 이런 질문이있는 경우 죄송합니다. 귀하의 정보를 보내 주셔서 감사합니다.

답변

1

전체 배열을 구문 분석하지 않고 foreach 루프가 통과하는 엔티티 만 구문 분석합니다. 이것이 가장 빠른 방법이라고 확신합니다.

얼마나 빨리 실행해야하는지, 배열이 얼마나 커지는 지에 따라 trie structure을 사용하면 속도가 빨라질 수 있습니다.

+0

사실 중간에 일치하는 항목이 발견되면 전체 배열은 구문 분석되지 않습니다. 나는 당신의 의견과 빠른 응답에 감사드립니다. – Teno

+0

이 배열은 얼마나 큽니까? –

+0

사용할 배열에 100 개가 넘는 키 (요소)가 없습니다. – Teno

관련 문제