我有这样下面的阵列$days
:搜索元素,并删除它从PHP的
$days= array ("Monday 1 April 2013","Tuesday 2 April 2013","Wednesday 3 April");
我会通过搜索它来删除所有与周一和周日开始元素。
我有这样下面的阵列$days
:搜索元素,并删除它从PHP的
$days= array ("Monday 1 April 2013","Tuesday 2 April 2013","Wednesday 3 April");
我会通过搜索它来删除所有与周一和周日开始元素。
您可以使用preg_grep()来获取与正则表达式匹配的数组元素。要获得元素不匹配的表达,使表达negative lookahead(?!
)的
$days = array ("Monday 1 April 2013", "Tuesday 2 April 2013", "Wednesday 3 April");
$result = preg_grep('/^(?!Monday|Sunday)/', $days);
print_r($result);
结果
Array
(
[1] => Tuesday 2 April 2013
[2] => Wednesday 3 April
)
正则表达式^(?!Monday|Sunday)
意味着“找到^
任何发生(开始主题字符串)后面跟着“星期一”或“星期天”。
非常感谢...有一种方法可以在preg_grep之后度假并删除数组的空键? – user1197284 2013-04-11 15:05:43
@ user1197284你的意思是你想要一个类似'array(0 =>'Tuesday ...',1 =>'Wednesday ...')'的结果吗?你可以用'array_values($ result)'实现这一点。 – 2013-04-11 15:28:12
$days = array_filter($days, function($el){
return !(strpos($el, 'Monday') === 0 || strpos($el, 'Sunday') === 0);
});
我会替换'如果(表达式)返回false;否则返回true;''return'expression'。 – 2013-04-11 16:20:09
@ax我按照你的说法编辑它。 – Paulpro 2013-04-11 16:29:56
尝试这种情况:
for($i=0;$i<count($days);$i++) {
$words = explode(' ',$days[$i]);
if($words[0]==='Monday' || $words[0]==='Sunday') unset($days[$i]);
}
$new_array=array();
$days= array ("Monday 1 April 2013","Tuesday 2 April 2013","Wednesday 3 April");
foreach($days as $key=>$val)
{
$words = explode(' ',$val);
if($words[0]!='Monday' || $words[0]!='Sunday')
{
$new_array[]=$val;
}
}
}
尝试使用['array_search'](http://php.net/manual/en/function.array-search.php)。 – jdepypere 2013-04-11 14:20:33
你试过了什么?我们不会在这里为你做。另外,你不应该把日期存储为字符串;希望你没有这样做,这是某种用户输入。 – 2013-04-11 14:20:45