PHP - 将一个字符串与数组中的所有内容进行比较,并且只回显一次(唯一)

PHP - Compare a string to all in array and only echo once (unique)

我正在尝试从一个文件中创建一个目录列表。但我只希望列表包含唯一条目,即 - 仅回显一次没有重复项。

示例: 从这个日志文件:

inactive : [2007-04-01 08:42:21] "home/club/member" 210.00 "r-200"
inactive : [2008-08-01 05:02:20] "home/club/staff" 25.00 "r-200"
active : [2010-08-11 10:12:20] "home/club/member" 210.00 "r-500"
inactive : [2010-01-02 11:12:33] "home/premier/member" 250.00 "r-200"
active : [2013-03-04 10:02:30] "home/premier/member" 250.00 "r-800"
active : [2011-09-14 15:02:55] "home/premier/member" 250.00 "r-100"

我想回显目录列表但没有重复:

home/club/staff

home/club/member

home/premier/member

我使用 foreach 循环遍历数组,但我不知道如何将每个值与数组中的每个项目进行比较,然后只输出相同的项目一次。

foreach($listofDir as $value) 
{
    echo "<p>" . $value .  "</p>";
}

这应该适合你:

只需将您的文件放入数组中,然后从每一行中获取路径。

<?php

    $lines = file("test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    $directorys = array_unique(array_map(function($v){
        preg_match("/.*? : \[.*?\] \"(.*?)\"/", $v, $m);
        return $m[1];
    }, $lines));

    print_r($directorys);

?>

输出:

Array
(
    [0] => home/club/member
    [1] => home/club/staff
    [3] => home/premier/member
)