PHP使用带有多维数组的array_replace

我正试图建立一个游戏板8×8用于一个小型战舰游戏,游戏部件就位(有点像跳棋)
所以我可以用MySQL移动棋子,玩家可以在棋盘上自由移动以对抗彼此的战列舰.

这些部分将被放置在预定的空间中,而其他空间将是空的并由MysqL处理

$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在棋盘内移动

解决方法:

如果您使用PHP> = 5.3,则可以使用array_map

$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

function map(&$value, $key, $map) {
    if(array_key_exists($value, $map)) {
        $value = $map[$value];
    }
}

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

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

更新:

DEMO HERE

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...