2013-04-11 34 views
-2

我有這樣下面的陣列$days搜索元素,並刪除它從PHP的

$days= array ("Monday 1 April 2013","Tuesday 2 April 2013","Wednesday 3 April"); 

我會通過搜索它來刪除所有與週一和週日開始元素。

+0

嘗試使用['array_search'](http://php.net/manual/en/function.array-search.php)。 – jdepypere 2013-04-11 14:20:33

+1

你試過了什麼?我們不會在這裏爲你做。另外,你不應該把日期存儲爲字符串;希望你沒有這樣做,這是某種用戶輸入。 – 2013-04-11 14:20:45

回答

0

您可以使用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)意味着「找到^任何發生(開始主題字符串)後面跟着「星期一」或「星期天」。

+0

非常感謝...有一種方法可以在preg_grep之後度假並刪除數組的空鍵? – user1197284 2013-04-11 15:05:43

+0

@ user1197284你的意思是你想要一個類似'array(0 =>'Tuesday ...',1 =>'Wednesday ...')'的結果嗎?你可以用'array_values($ result)'實現這一點。 – 2013-04-11 15:28:12

0
$days = array_filter($days, function($el){ 
    return !(strpos($el, 'Monday') === 0 || strpos($el, 'Sunday') === 0); 
}); 

Codepad Example

+0

我會替換'如果(表達式)返回false;否則返回true;''return'expression'。 – 2013-04-11 16:20:09

+0

@ax我按照你的說法編輯它。 – Paulpro 2013-04-11 16:29:56

0

嘗試這種情況:

for($i=0;$i<count($days);$i++) { 
    $words = explode(' ',$days[$i]); 
    if($words[0]==='Monday' || $words[0]==='Sunday') unset($days[$i]);  
} 
0
$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; 

} 


}  


}