2010-03-09 3 views
3

나는 다음과 같은 멤버 배열을 말해봐 :접두어로 필터 배열 - 해당 함수의 이름은 무엇입니까?

car_porsche 
car_mercedes 
car_toyota 
motorcycle_suzuki 
motorcycle_honda 
motorcycle_motoguzzi 

어떻게 car_로 시작하는 모든 요소를 ​​가진 배열을받을 수 있나요? 이것에 대한 네이티브 함수가 있었지만 이름을 잊어 버렸습니다.

내가 말하는 기능을 알고 있습니까? 나는 for/foreach/array_filter를 사용하는 방법을 안다. 나는 정확히 이것에 대한 함수가 있다고 확신한다.

답변

5

글쎄, 당신은 preg_grep()를 사용하여 할 수있는 : 당신은 너무 array_filter()를 사용할 수 있지만, 당신이에 테스트 함수를 통과해야

$output = preg_grep('!^car_!', $array); 

.

1

당신은 당신에게 당신의 반환 배열의 접두사를 삭제하는 옵션을 제공하는 간단한 루틴을 작성할 수 있습니다

function filter_by_key_prefix ($arr, $prefix, $drop_prefix=false) { 
     $params = array(); 
     foreach($arr as $k=>$v) { 
      if (strpos($k, $prefix) === 0) { 
       if ($drop_prefix) { 
        $k = substr($k, strlen($prefix)); 
       } 
       $params[ $k ] = $v; 
      } 
     } 
     return $params; 
    } 
2

정규 표현식을 처리하는 데 더 많은 시간이 소요,이에 strpos()를 사용하는 것이 좋습니다 그것은` 케이스 :

foreach($arr AS $key => $val) 
if(strpos(" ".$val, "car_") == 1)  
    $cars[$key] = $val; 

이것은 또한 키와 함께 작동 :

관련 문제