2014-10-03 21 views
0

從陣列dulicate我有一個數組看起來像這樣如何讓所有的元素使用PHP

 
Array 
(
    [0] => . 
    [1] => .. 
    [2] => error_2014-09-26.log 
    [3] => error_2014-09-27.log 
    [4] => error_2014-09-29.log 
    [5] => error_2014-09-30.log 
    [6] => error_2014-10-01.log 
    [7] => error_2014-10-02.log 
    [8] => error_2014-10-03.log 
    [9] => error_2014-10-04.log 
    [10] => index.php 
) 

現在,我想獲得的所有元素「.LOG」文件?示例

 
Array 
(
    [0] => error_2014-09-26.log 
    [1] => error_2014-09-27.log 
    [2] => error_2014-09-29.log 
    [3] => error_2014-09-30.log 
    [4] => error_2014-10-01.log 
    [5] => error_2014-10-02.log 
    [6] => error_2014-10-03.log 
    [7] => error_2014-10-04.log 
) 
+0

你可以使用'array_map()'方法。 – 2014-10-03 08:47:15

回答

0

使用PHP中使用的爆炸函數,使用「。」作爲刪除者

$array = Array 
(
    [0] => . 
    [1] => .. 
    [2] => error_2014-09-26.log 
    [3] => error_2014-09-27.log 
    [4] => error_2014-09-29.log 
    [5] => error_2014-09-30.log 
    [6] => error_2014-10-01.log 
    [7] => error_2014-10-02.log 
    [8] => error_2014-10-03.log 
    [9] => error_2014-10-04.log 
    [10] => index.php 
) 
$allowed = array("log"); 
foreach($array as $index = $value){ 
    $value = end(explode(".",$value)); //return array [0]=>error_2014-09-26 [1]=>log 
    if(!in_array($value,$allowed)){ 
     unset($array[$index]); 
    } 
} 
0

array_filter()可能是你的朋友在這裏。這似乎滿足於你的問題的說明

$original = [ 
    ".", 
    "..", 
    "error_2014-09-26.log", 
    "error_2014-09-27.log", 
    "error_2014-09-29.log", 
    "error_2014-09-30.log", 
    "error_2014-10-01.log", 
    "error_2014-10-02.log", 
    "error_2014-10-03.log", 
    "error_2014-10-04.log", 
    "index.php" 
]; 

$filtered = array_filter($original, function($entry){ 
    return preg_match("/\.log$/", $entry); 
}); 

echo "<pre>"; 
var_dump($filtered); 
echo "</pre>"; 

這將返回(但不是問題的主題行,這似乎不匹配的問題?):

array(8) { 
    [2]=> 
    string(20) "error_2014-09-26.log" 
    [3]=> 
    string(20) "error_2014-09-27.log" 
    [4]=> 
    string(20) "error_2014-09-29.log" 
    [5]=> 
    string(20) "error_2014-09-30.log" 
    [6]=> 
    string(20) "error_2014-10-01.log" 
    [7]=> 
    string(20) "error_2014-10-02.log" 
    [8]=> 
    string(20) "error_2014-10-03.log" 
    [9]=> 
    string(20) "error_2014-10-04.log" 
} 

這是很容易只使用foreach(),但使用array_filter()會使您的代碼更具自描述性,並且更加優雅。

相關問題