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

PHP统计数组中不同位数数字数量的代码问题排查

问题分析

你提供的代码存在多类错误,导致统计结果不符合预期,具体问题如下:

  • 数组索引使用错误:PHP 索引数组默认从0开始,你设置循环初始值$i=1,还判断$i<=$size,会直接漏掉第一个元素,还会出现最后一次循环访问不存在的数组下标导致报错。
  • 统计对象错误:你代码里判断的是循环变量$i的长度,不是数组中对应下标的元素$myArray[$i]的长度,自然统计结果完全不符合预期。
  • 语法逻辑错误:
    1. strlen($i==3)的写法逻辑完全错误,等于先执行$i==3得到布尔值,再求布尔值的字符串长度,永远得不到正确结果,正确写法应该是先把数组元素转字符串求长度,再和目标位数对比。
    2. 循环语句里的i++漏了$符号,应该是$i++,代码会直接报错。
    3. 第二段代码里数组定义$myArray=(123...)漏了array关键字,PHP7+也可以用短数组写法[],原写法属于语法错误。
    4. 第二段代码里if(strlen($==3))属于语法错误,变量名缺失。
修正后的代码

这里推荐使用foreach遍历数组,不需要手动处理下标,逻辑更简洁不容易出错:

<?php
// 初始化统计变量
$twoDigits = 0;
$threeDigits = 0;
$fourDigits = 0;
$fiveDigits = 0;
$sixDigits = 0;

// 定义数组
$myArray = [123,1234,12345,123456,1234567,111,222];

// 遍历数组
foreach ($myArray as $num) {
    $len = strlen((string)$num);
    switch ($len) {
        case 2:
            $twoDigits++;
            break;
        case 3:
            $threeDigits++;
            break;
        case 4:
            $fourDigits++;
            break;
        case 5:
            $fiveDigits++;
            break;
        case 6:
            $sixDigits++;
            break;
    }
}

// 输出结果
echo "There are " . $twoDigits . " numbers with 2 digits.\n";
echo "There are " . $threeDigits . " numbers with 3 digits.\n";
echo "There are " . $fourDigits . " numbers with 4 digits.\n";
echo "There are " . $fiveDigits . " numbers with 5 digits.\n";
echo "There are " . $sixDigits . " numbers with 6 digits.\n";
?>

如果一定要用for循环,写法如下:

<?php
$twoDigits = 0;
$threeDigits = 0;
$fourDigits = 0;
$fiveDigits = 0;
$sixDigits = 0;
$myArray = [123,1234,12345,123456,1234567,111,222];
$size = count($myArray);
// 下标从0开始,判断条件为小于数组长度
for($i=0; $i < $size; $i++) {
    $len = strlen((string)$myArray[$i]);
    if ($len == 2) $twoDigits++;
    elseif ($len == 3) $threeDigits++;
    elseif ($len == 4) $fourDigits++;
    elseif ($len == 5) $fiveDigits++;
    elseif ($len == 6) $sixDigits++;
}
echo "There are " . $threeDigits . " numbers with 3 digits."; // 会正确输出3
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:36:01