2012-04-26 164 views
1

我有一個名爲「items」的父項的PHP數組。在那個數組中,我想刪除所有不包含字符串的值(我將使用正則表達式來查找)。我將如何做到這一點?基於值從數組中刪除值?

+1

你的做法? (代碼) – Superbiji 2012-04-26 17:20:05

+0

如果您只是希望匹配字符串,請考慮使用strpos而不是RegEx--更快,尤其是在數組很大的情況下。 – Madbreaks 2012-04-26 17:22:30

回答

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

這將做到這一點。請享用! – Malovich 2012-04-26 17:21:06

+0

感謝您的支持! – iamandrus 2012-04-26 17:31:15

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+。在5.2中,你可以這樣說:

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

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

我更喜歡這種方法來強制循環陣列,很好的答案。 – Madbreaks 2012-04-26 17:28:02