You need to enable JavaScript to run this app. PHP中如何通过点分隔字符串访问多维数组的嵌套元素值
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何通过点分隔字符串访问多维数组的嵌套元素值

原生PHP实现点路径读取多维数组

直接通过拆分点分隔的路径字符串、逐层遍历数组的方式即可实现,不需要复杂的语法解析,代码可直接复用:

通用取值函数

function get_value_by_dot_path(array $array, string $dot_path, $default = null)
{
    // 将点分隔的字符串拆分为独立的层级键列表
    $keys = explode('.', $dot_path);
    $current_level = $array;

    foreach ($keys as $key) {
        // 路径中途出现非数组层级、或键不存在时,直接返回默认值,避免触发未定义键警告
        if (!is_array($current_level) || !array_key_exists($key, $current_level)) {
            return $default;
        }
        $current_level = $current_level[$key];
    }

    return $current_level;
}

函数没有强类型声明,可兼容所有PHP版本运行。

使用示例

注意你提供的示例数组中"name" => 'Test A'一行末尾漏了逗号,实际使用时需要补上符合PHP语法的分隔符,否则会触发解析错误。

// 语法修正后的原数组
$array = [
   "id" => 1,
   "name" => 'Test A',
   "b" => [
     "id" => 1,
     "name" => "Test B",
     "c" => [
       "id" => 1,
       "name" => 'Test'
      ]
   ]
];

// 等价于读取 $array['b']['c']
$c = get_value_by_dot_path($array, 'b.c');

// 支持直接读取更深层的标量值,等价于 $array['b']['c']['name']
$target_name = get_value_by_dot_path($array, 'b.c.name');

// 路径不存在时可自定义返回默认值,不会抛出错误
$not_exists = get_value_by_dot_path($array, 'b.d.e', '自定义默认值');

扩展说明

  • 这套逻辑同样支持写操作:遍历到路径最后一层时,直接对当前层级的对应键赋值,即可实现修改嵌套数组任意位置的值
  • 整个实现没有第三方依赖,可直接在任意PHP项目中复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 11:06:05