使用COUNT_RECURSIVE的count()统计二维数组返回错误结果的原因及解决
问题原因
当使用count($chessboard, COUNT_RECURSIVE)时,递归统计会把每个子数组本身也算作一个元素。你的棋盘有8个子数组,每个子数组包含8个元素,总统计数就是8(子数组本身) + 8×8(子数组内的元素)=72,这就是结果不符合预期的原因。
修正方法
有两种常用的正确统计方式:
- 手动循环累加
遍历外层数组,逐个统计每个子数组的元素数量并相加:
$total = 0; foreach ($chessboard as $row) { $total += count($row); } echo $total; // 输出64
- 用数组函数组合计算
利用array_map和array_sum简化代码:
$total = array_sum(array_map('count', $chessboard)); echo $total; // 输出64
这两种方式都只会统计子数组内的元素,不会把外层的子数组本身计入总数,最终得到正确的64个元素统计结果。
内容的提问来源于stack exchange,提问作者Hrqls
相关产品推荐
相关产品推荐

