在開發遊戲、繪製地圖、設計表格或管理坐標數據時,我們經常需要構建一個二維數組(矩陣)結構。 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 配合動態交互,可以將生成的數據傳遞到前端進行渲染,實現更高級的效果。