php - 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);
解决方案
当您1
作为第二个参数传递给 时count()
,它会递归计数 - 因此对于第一级,它计算 8 个项目(意味着 8 个子数组),然后进入第二级,在每个子数组中遇到 8 个项目。因此 8 + 8 * 8 = 72。
推荐阅读
- firebase - 如何限制用户可以上传到 Firebase 存储的文件的总大小?
- php - 如何保存不同名称的图像?
- reactjs - Chartjs 圆环图圆角用于圆周为 3*Pi/2 的圆环
- python - 删除 pandas 中的时区信息
- c++ - 不使用 cout<< 将值四舍五入到小数点后 2 位
- html - 应用媒体查询时,没有任何调整
- git - 如何开发一个新的功能分支,同时其他人用 git 更改主分支?
- java - 2D ArrayList 用法
- java - 当 BLE 设备特性的某个值在 Android 上发生变化时如何通知用户?
- javascript - 在javascript中使用正则表达式从字符串中提取子字符串