首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有多维数组的array_replace

使用带有多维数组的array_replace
EN

Stack Overflow用户
提问于 2010-10-24 15:32:44
回答 1查看 1.5K关注 0票数 3

我正在尝试为战舰的一个小游戏建立一个8x8的游戏板,里面有游戏棋子(有点像跳棋),这样我就可以用MySQL移动棋子,玩家可以在棋盘上自由移动来对抗对方的战舰。

这些片段将被放置在预定空间中,而其他空间将是空的,并由mysql处理

代码语言:javascript
复制
$pieces = array(
          //battleship 1 player 1
          "b1" => '<img src="images/b1.jpg" width="100" height="100" alt="b1">',
          //battleship 2 player2
          "b2" => '<img src="images/b1.jpg" width="100" height="100" alt="b1">',
         );
              // 'es' represents empty squares
$board = array(
         array('b1','es','b1','es','b1','es','b1','es'),
         array('es','b1','es','b1','es','b1','es','b1'),
         array('b1','es','b1','es','b1','es','b1','es'),
         array('es','es','es','es','es','es','es','es'),
         array('es','es','es','es','es','es','es','es'),
         array('es','es','es','es','es','es','es','es'),
         array('b2','es','b2','es','b2','es','b2','es'),
         array('es','b2','es','b2','es','b2','es','b2'),
         array('b2','es','b2','es','b2','es','b2','es')
      );

我已经有一个循环来显示电路板我问的是如何放置($piece -> $board)我知道你可以使用array_replace将和数组的元素放入另一个数组中,但我不知道如何使用多维数组。

我还在尝试使用mysql在板内移动

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-24 15:48:20

如果使用PHPPHP5.3,则可以使用array_map

代码语言:javascript
复制
$callback = function($value) use ($pieces) {
    if(array_key_exists($value, $pieces)) {
        return $pieces[$value];
    }
    return $value;
}

foreach($board as &$row) {
    $row = array_map($row, $callback);
}

如果使用PHP < 5.3,则可以使用array_walk_recursive

代码语言:javascript
复制
function map(&$value, $key, $map) {
    if(array_key_exists($value, $map)) {
        $value = $map[$value];
    }
}

array_walk_recursive($board, 'map', $pieces);

not PHP 5.3版本在这两种情况下都会更短;)

更新:

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4007421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档