You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CodeIgniter中如何访问键名含反斜杠\的数组元素?

如何访问CodeIgniter directory_map返回的带反斜杠键名的数组元素

嘿,这个问题我之前在项目里也碰到过!当你用CodeIgniter的directory_map()函数遍历目录时,返回的数组里目录对应的键名会自带反斜杠(比如cache\),这是函数默认用来区分目录和文件的方式。要访问这些键对应的元素其实很简单,给你几种实用的方法:

方法一:直接用转义后的键名访问

因为反斜杠在PHP字符串里是转义字符,所以你需要把键名里的反斜杠转义后再使用:

public function dirNames() {
    $maps = directory_map('./application',2);
    
    // 用单引号包裹键名,转义反斜杠
    $cacheContents = $maps['cache\\'];
    print_r($cacheContents);
    
    // 用双引号包裹也可以,同样需要转义
    $configContents = $maps["config\\"];
    print_r($configContents);
}

这里的两个反斜杠\\会被PHP解析为一个实际的反斜杠,刚好匹配数组里的键名。

方法二:先清理键名,再正常访问

如果你觉得每次转义太麻烦,可以先遍历数组,把所有目录键名末尾的反斜杠去掉,之后就能用普通的键名访问了:

基础foreach写法

public function dirNames() {
    $maps = directory_map('./application',2);
    $cleanMaps = [];
    
    foreach ($maps as $key => $value) {
        // 去掉键名末尾的反斜杠
        $cleanKey = rtrim($key, '\\');
        $cleanMaps[$cleanKey] = $value;
    }
    
    // 现在直接用不带反斜杠的键名访问
    print_r($cleanMaps['cache']);
    print_r($cleanMaps['config']);
}

更简洁的函数式写法

如果你喜欢用PHP的数组函数,可以用array_combine配合array_map来快速处理:

public function dirNames() {
    $maps = directory_map('./application',2);
    
    $cleanMaps = array_combine(
        array_map(fn($key) => rtrim($key, '\\'), array_keys($maps)),
        $maps
    );
    
    print_r($cleanMaps['cache']);
}

额外小提示

为什么会出现带反斜杠的键名?其实directory_map()函数会给目录名加上当前系统的路径分隔符(Windows下是反斜杠,Linux/macOS下是正斜杠),用来明确区分数组里的元素是目录还是文件——带分隔符的是目录,不带的是文件。如果你的项目需要跨平台运行,处理键名时可以用DIRECTORY_SEPARATOR常量代替硬写的\\,兼容性更好:

$cleanKey = rtrim($key, DIRECTORY_SEPARATOR);

内容的提问来源于stack exchange,提问作者Chaitanya Bhallamudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:09:34