2012-04-26 19 views
1

私は、 "items"という親を持つPHP配列を持っています。その配列では、文字列を含まないすべての値を削除したいと思います(正規表現を使用して検索します)。どうすればいい?値に基づいて配列から値を削除しますか?

+1

あなたのアプローチ:5.2では、あなたは、このようにそれを行うことができますか? (コード) – Superbiji

+0

文字列との照合だけが必要な場合は、RegExの代わりにstrposを使用することを検討してください。特に、配列が大きい場合は高速です。 – Madbreaks

答えて

5
foreach($array['items'] as $key=>$value) { // loop through the array 
    if(!preg_match("/your_regex/", $value)) { 
     unset($array['items'][$key]); 
    } 
} 
+0

それはやるよ。楽しい! – Malovich

+0

ありがとう! – iamandrus

2

array_filterを試すことができます。

$items = array(
    #some values 
); 
$regex= '/^[some]+(regex)*$/i'; 
$items = array_filter($items, function($a) use ($regex){ 
    return preg_match($regex, $a) !== 0; 
}); 

注:これはPHP 5.3以降でのみ動作します。

function checkStr($a){ 
    $regex= '/^[some]+(regex)*$/i'; 
    return preg_match($regex, $a) !== 0; 
} 

$items = array(
    #some values 
); 
$items = array_filter($items, 'checkStr'); 
+0

私はアレイ全体の無理矢理な力のループにこのアプローチを推奨します。 – Madbreaks

関連する問題