2012-04-26 150 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