2010-03-09 53 views
3

說我有具有以下成員的數組:按前綴過濾數組 - 該函數的名稱是什麼?

car_porsche 
car_mercedes 
car_toyota 
motorcycle_suzuki 
motorcycle_honda 
motorcycle_motoguzzi 

我怎樣才能得到與開始car_的所有元素的數組?有一個本地功能,但我忘了它的名字。

你知道我的意思嗎?我知道如何用for/foreach/array_filter來做到這一點。我很肯定有這個功能。

回答

5

嗯,你可以使用preg_grep()做到這一點:

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

你可以使用array_filter()太多,但你必須通過一個測試功能成。

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; 

這也適用於鍵:

相關問題