說我有具有以下成員的數組:按前綴過濾數組 - 該函數的名稱是什麼?
car_porsche
car_mercedes
car_toyota
motorcycle_suzuki
motorcycle_honda
motorcycle_motoguzzi
我怎樣才能得到與開始car_
的所有元素的數組?有一個本地功能,但我忘了它的名字。
你知道我的意思嗎?我知道如何用for/foreach/array_filter來做到這一點。我很肯定有這個功能。
說我有具有以下成員的數組:按前綴過濾數組 - 該函數的名稱是什麼?
car_porsche
car_mercedes
car_toyota
motorcycle_suzuki
motorcycle_honda
motorcycle_motoguzzi
我怎樣才能得到與開始car_
的所有元素的數組?有一個本地功能,但我忘了它的名字。
你知道我的意思嗎?我知道如何用for/foreach/array_filter來做到這一點。我很肯定有這個功能。
嗯,你可以使用preg_grep()
做到這一點:
$output = preg_grep('!^car_!', $array);
你可以使用array_filter()
太多,但你必須通過一個測試功能成。
我認爲你可以使用array_filter()來達到這個目的。
你可以寫一個簡單的程序,讓你的返回數組中丟棄前綴的選項:
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;
}
正則表達式需要更多的時間來處理,它`最好使用這個strpos()案例:
foreach($arr AS $key => $val)
if(strpos(" ".$val, "car_") == 1)
$cars[$key] = $val;
這也適用於鍵: