我有這樣下面的陣列$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