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

如何直接计算PHP嵌套数组中元素的字符串长度?

如何在PHP中计算嵌套数组元素转字符串后的长度并格式化输出

当然可以直接在数组上完成这个操作!PHP的数组高阶函数(比如array_map和implode)完美适配这种嵌套数组的转换需求,全程不需要手动循环取出元素,代码简洁且易维护。

实现思路

我们可以分两步处理:

  1. 遍历嵌套数组:对每个子数组里的元素,先转换为字符串,再计算其长度,得到每个子数组对应的长度数组。
  2. 格式化输出:将每个子数组的长度数组用空格拼接成字符串,再把所有子数组的结果用逗号拼接,最终得到你需要的格式。

代码示例

$mainArray = [ [4], [3, 4], [2, 30, 43, 65, 53, 634]];

// 第一步:处理每个子数组,生成对应长度的字符串
$lengthGroups = array_map(function($subArray) {
    // 把子数组里的每个数字转字符串后取长度
    $elementLengths = array_map(function($number) {
        return strlen((string)$number);
    }, $subArray);
    // 子数组内的长度用空格连接
    return implode(' ', $elementLengths);
}, $mainArray);

// 第二步:把所有子数组的结果用逗号连接
$finalOutput = implode(', ', $lengthGroups);

echo $finalOutput;
// 输出结果:1, 1 1, 1 2 2 2 2 3

如果你需要的是扁平化的逗号分隔格式

看你给出的期望输出1 1,1 1,2,2,2,2,3,可能是希望把所有长度扁平化后用逗号分隔?如果是这样,可以用array_reduce来合并所有子数组的长度结果:

$mainArray = [ [4], [3, 4], [2, 30, 43, 65, 53, 634]];

// 扁平化所有元素的长度
$allLengths = array_reduce($mainArray, function($result, $subArray) {
    $subLengths = array_map(fn($num) => strlen((string)$num), $subArray);
    return array_merge($result, $subLengths);
}, []);

// 用逗号连接所有长度
$finalOutput = implode(',', $allLengths);

echo $finalOutput;
// 输出结果:1,1,1,1,2,2,2,2,3

关键说明

  • 全程都是对数组直接操作,没有额外的变量存储单个元素,完全符合你“直接在数组上完成操作”的需求。
  • 使用(string)$number强制转换数字为字符串,再用strlen()获取长度,这一步是核心转换逻辑,简单可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:35:45