當前位置: 首頁> 最新文章列表> 如何用array_fill() 構建二維棋盤、地圖結構

如何用array_fill() 構建二維棋盤、地圖結構

M66 2025-06-05

在開發遊戲、繪製地圖、設計表格或管理坐標數據時,我們經常需要構建一個二維數組(矩陣)結構。 PHP 提供了一個非常方便的函數—— array_fill() ,它不僅能快速填充一維數組,還可以幫助我們輕鬆地構建一個初始化好的二維棋盤或地圖結構。

本文將介紹array_fill()的基本用法,並演示如何利用它來構建一個規則的二維網格結構,比如8x8 的國際象棋棋盤。

一、array_fill() 函數簡介

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()來填充每一行。

示例:創建一個8x8 的空棋盤

<?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"nullfalse

三、用於地圖構建的示例(自定義地形)

比如,我們要構建一個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>';

這種方式可以用來構建一個具備初始地形的地圖,方便後續修改或渲染地圖界面。

四、進階:結合URL 數據(如地圖服務)

如果你要為每個格子提供對應的數據接口地址,例如點擊後跳轉到格子詳情頁,可以這樣做:

 <?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 配合動態交互,可以將生成的數據傳遞到前端進行渲染,實現更高級的效果。