加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – array_unique()没有排序

发布时间:2020-12-13 13:31:32 所属栏目:PHP教程 来源:网络整理
导读:我正在构建一个扩展include_path的自动加载器.它需要一个数组,附加explode()d include路径,删除对当前目录的所有引用,在数组的开头添加一个当前目录,最后将整个事物连接起来()以形成一个新的包含路径.代码如下所示 ?phpstatic public function extendInclude
我正在构建一个扩展include_path的自动加载器.它需要一个数组,附加explode()d include路径,删除对当前目录的所有引用,在数组的开头添加一个当前目录,最后将整个事物连接起来()以形成一个新的包含路径.代码如下所示
<?php
static public function extendIncludePath (array $paths)
{
    // Build a list of the current and new paths
    $pathList   = array_merge (explode (PATH_SEPARATOR,$paths),explode (PATH_SEPARATOR,get_include_path ()));
    // Remove any references to the current directory from the path list
    while ($key = array_search ('.',$pathList))
    {
        unset ($pathList [$key]);
    }
    // Put a current directory reference to the front of the path
    array_unshift ($pathList,'.');
    // Generate the new path list
    $newPath    = implode (PATH_SEPARATOR,$pathList);
    if ($oldPath = set_include_path ($newPath))
    {
        self::$oldPaths []  = $oldPath;
    }
    return ($oldPath);
}
?>

我想在对数组进行imploding之前在数组上使用array_unique(),这样如果有人粗心并且多次指定相同的路径,PHP就不会多次查看同一个地方.但是,我还需要维护数组的排序顺序,因为include包含在include路径中定义的顺序.我想首先查看当前目录,然后查看我的搜索目录列表,最后查看原始包含路径,以便例如默认include_path中的旧版本公共库不包含在新版本中在我的搜索列表中.

由于这些原因,我不能使用array_unique(),因为它对数组的内容进行排序.

有没有办法让array_unique保存我的数组中元素的顺序?

不直接使用array_unique();但是array_unique会保留密钥,因此您可以在之后执行ksort()以重新创建条目的原始顺序

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读