首页 > 解决方案 > PHP预定义函数 - 计数 - 在多维数组中返回一个奇怪的(对我来说)值?

问题描述

我从一本书开始学习 PHP,我得到了一个有用的 PHP 命令列表(排序、计数、is_array 等。)

我尝试使用 count() 但对我来说似乎很棘手。

count($chessboard, 0) 输出 8 我认为这很好(因为它有 8 行,我明白了)但是当我使用 count($chessboard, 1) 它输出 72 我不明白为什么。

在我看来,我认为它应该输出 64(因为 8 行 * 8 列或 8 行 * 每行 8 个元素)。

为什么输出64?

<?php
$chessboard = array(
    array('r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'),
    array('p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'),
    array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '),
    array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '),
    array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '),
    array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '),
    array('P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'),
    array('R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R')
  );
  
echo count($chessboard, 1);

标签: php

解决方案


当您1作为第二个参数传递给 时count(),它会递归计数 - 因此对于第一级,它计算 8 个项目(意味着 8 个子数组),然后进入第二级,在每个子数组中遇到 8 个项目。因此 8 + 8 * 8 = 72。


推荐阅读