首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP --将字符串与数组中的所有字符串进行比较,并且只回显一次(唯一)

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

Stack Overflow用户
提问于 2015-06-14 10:52:58
回答 1查看 160关注 0票数 1

我试图从一个文件中列出目录。但我只希望列表包含唯一的条目,也就是说,只有回显一次,没有重复。

示例:从这个日志文件:

代码语言:javascript
运行
复制
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"

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

家庭/俱乐部/工作人员

家庭/俱乐部/成员

家庭/总理/成员

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

代码语言:javascript
运行
复制
foreach($listofDir as $value) 
{
    echo "<p>" . $value .  "</p>";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-14 11:04:14

这应该适用于你:

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

代码语言:javascript
运行
复制
<?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);

?>

产出:

代码语言:javascript
运行
复制
Array
(
    [0] => home/club/member
    [1] => home/club/staff
    [3] => home/premier/member
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30828492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档