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

如何将PHP数组中的内层嵌套数组扁平化为字符串值?

将PHP数组中的内层单元素数组转为字符串值

输入数组

[
  ["username" => "erick", "location" => ["singapore"], "province" => ["jatim"]],
  ["username" => "thomas", "location" => ["ukraina"], "province" => ["anonymouse"]]
]

预期输出

[
  ["username" => "erick", "location" => "singapore", "province" => "jatim"],
  ["username" => "thomas", "location" => "ukraina", "province" => "anonymouse"]
]

实现方法

方法一:遍历处理每个用户数组

通过array_map遍历外层数组,对每个用户子数组的元素逐一检查,若为单元素数组则提取其唯一值:

$input = [
    ["username" => "erick", "location" => ["singapore"], "province" => ["jatim"]],
    ["username" => "thomas", "location" => ["ukraina"], "province" => ["anonymouse"]]
];

$output = array_map(function($user) {
    foreach ($user as $key => $value) {
        // 判断是否为单元素数组
        if (is_array($value) && count($value) === 1) {
            $user[$key] = reset($value); // 提取数组第一个元素(不依赖数字键)
        }
    }
    return $user;
}, $input);

// 输出结果
print_r($output);

方法二:嵌套array_map简化写法

利用array_combine结合嵌套array_map,一次性处理所有值的转换:

$output = array_map(function($user) {
    return array_combine(
        array_keys($user),
        array_map(function($val) {
            return is_array($val) && count($val) === 1 ? reset($val) : $val;
        }, $user)
    );
}, $input);

补充说明

  • 如果内层数组可能为空,可添加判断逻辑返回默认值(比如空字符串):count($value) === 1 ? reset($val) : (empty($val) ? '' : $val)
  • reset()方法会返回数组的第一个元素,不管键名是数字还是字符串,比直接取$value[0]更通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:05:26