在开发游戏、绘制地图、设计表格或管理坐标数据时,我们经常需要构建一个二维数组(矩阵)结构。PHP 提供了一个非常方便的函数——array_fill(),它不仅能快速填充一维数组,还可以帮助我们轻松地构建一个初始化好的二维棋盘或地图结构。
本文将介绍 array_fill() 的基本用法,并演示如何利用它来构建一个规则的二维网格结构,比如 8x8 的国际象棋棋盘。
array_fill() 是 PHP 内置函数之一,其语法如下:
array_fill(int $start_index, int $count, mixed $value): array
$start_index:起始索引。
$count:要填充的元素个数。
$value:每个元素的值。
示例:
$line = array_fill(0, 5, 0);
// 结果: [0, 0, 0, 0, 0]
要构建一个二维数组,比如一个 8x8 的棋盘或地图,我们可以在一个循环中使用 array_fill() 来填充每一行。
<?php
$rows = 8;
$cols = 8;
$board = [];
for ($i = 0; $i < $rows; $i++) {
$board[$i] = array_fill(0, $cols, 0);
}
// 打印结果查看结构
echo '<pre>';
print_r($board);
echo '</pre>';
输出的 $board 是一个 8 行 8 列的二维数组,所有格子都初始化为 0。你可以根据需要将 0 替换成其他标记,比如 "empty"、null 或 false。
比如,我们要构建一个 10x10 的地图,其中默认地形为 "grass":
<?php
$width = 10;
$height = 10;
$map = [];
for ($y = 0; $y < $height; $y++) {
$map[$y] = array_fill(0, $width, 'grass');
}
// 假设要设置某几个坐标为 "water"
$map[2][3] = 'water';
$map[4][7] = 'water';
$map[5][5] = 'mountain';
// 显示地图数组
echo '<pre>';
print_r($map);
echo '</pre>';
这种方式可以用来构建一个具备初始地形的地图,方便后续修改或渲染地图界面。
如果你要为每个格子提供对应的数据接口地址,例如点击后跳转到格子详情页,可以这样做:
<?php
$rows = 5;
$cols = 5;
$grid = [];
for ($i = 0; $i < $rows; $i++) {
$grid[$i] = [];
for ($j = 0; $j < $cols; $j++) {
$grid[$i][$j] = "https://m66.net/grid.php?x={$i}&y={$j}";
}
}
echo '<pre>';
print_r($grid);
echo '</pre>';
这样每一个格子都对应一个特定的 URL,例如 https://m66.net/grid.php?x=2&y=3,非常适合做成点击跳转的界面。
通过本文你可以学到:
如何使用 array_fill() 快速初始化一维数组。
如何通过循环配合 array_fill() 构建一个规则的二维数组结构。
如何基于坐标填充更多结构化或动态内容(如地图、链接等)。
这种方式简单高效,是构建地图、棋盘、表格等二维结构的理想方法。
如果你在实际项目中还想进一步美化显示、加上样式或与 JavaScript 配合动态交互,可以将生成的数据传递到前端进行渲染,实现更高级的效果。