как я могу сохранить этот массив в сеансе и использовать сеансы для перемещения элементов внутри массива вверх / вниз / влево / вправо по диагонали
$board = array(ABCDEFGH 0 array(0,0,0,0,0,0,0,0), 1 array(0,0,0,0,0,0,0,0), 2 array(0,0,0,0,0,0,0,0), 3 array(0,0,0,0,0,0,0,0), 4 array(0,0,0,0,0,0,0,0), 5 array(0,0,0,0,0,0,0,0), 6 array(0,0,0,0,0,0,0,0), 7 array(0,0,0,0,0,0,0,0) );
Я пытаюсь сохранить этот массив в сеансе
$pieces = array( //checkers pieces player 1 "b" => '<img src="bp.png" width="33" height="37" alt="black piece">', //Checkers pieces for player2 "r" => '<img src="rp.png" width="33" height="32" alt="red piece">', // Empty Squares // Black "bs" => '<img src="bs.png" width="30" height="30" alt="black square">', // Red "rs" => '<img src="rs.png" width="30" height="30" alt="black square">' ); // 'es' represents empty squares $board = array( ABCDEFGH 0 array('b','rs','b','rs','b','rs','b','rs'), 1 array('rs','b','rs','b','rs','b','rs','b'), 2 array('b','rs','b','rs','b','rs','b','rs'), 3 array('rs','bs','rs','bs','rs','bs','rs','bs'), 4 array('bs','rs','bs','rs','bs','rs','bs','rs'), 5 array('r','bs','r','bs','r','bs','r','bs'), 6 array('bs','r','bs','r','bs','r','bs','r'), 7 array('r','bs','r','bs','r','bs','r','bs') ); function map(&$value, $key, $map) { if(array_key_exists($value, $map)) { $value = $map[$value]; } } array_walk_recursive($board, 'map', $pieces);
и его выйдет на табличку 8×8, когда она распечатает
Я сделал $_SESSION['board'] = $board;
после array_walk_recursive
и положить его в
echo "<table border='1'>\n"; foreach ($_SESSION['board'] as $row) { echo "<tr>\n"; foreach ($row as $piece){ echo "<td>"; echo "$piece "; echo "</td>\n"; } } echo "</tr>\n"; echo "</table>\n"; }
пользователь вводит эту функцию (поле ввода FROM) F5 – (TO Input) G2 анализирует его в координатах с помощью этой функции
// parses the users input --FROM-- and to where the user wnats to move the piece // if the user inputs F1 it parses that into (0,0) coordinates function parseSquare() { if (strlen($square) != 2) { return FALSE; } $coords = array(ord('A') - ord($square[0]), $square[1] - 1); // Perform bounds-checking. if ($coords[0] < 0 || $coords[0] > 7 || $coords[1] < 0 || $coords[1] > 7) { return FALSE; } return $coords; } $coords = parseSquare($square); if ($coords === FALSE) { // Invalid input, handle this case. } else { $piece = $board[$coords[0]][$coords[1]]; // for example }
могу ли я использовать функцию выше для перемещения по диагонали
$_SESSION['board'][[$new_i]-1][[$new_j] + 1] = $_SESSION['board'][$old_i][$old_j]; $_SESSION['board'][$old_i][$old_j] = ...;
Вызовите session_start
и затем сохраните переменные в $_SESSION
– они будут доступны на протяжении всего сеанса:
session_start(); $_SESSION['board'] = array( ... );
Перемещение элементов – это просто назначение одного значения другому, например:
$_SESSION['board'][$new_i][$new_j] = $_SESSION['board'][$old_i][$old_j]; $_SESSION['board'][$old_i][$old_j] = ...;
$ _SESSION ['myArray'] = $ board;
и вы можете получить доступ к любому элементу, используя $ _SESSION ['myArray'] [i] [j];
Вы храните его в сеансе
<?php session_start(); $board=array('whatever'); $session['board']=$board;
Что касается манипуляции, это просто нормальный массив. Вы можете работать с ним, как и с любым другим массивом.
Да. вы можете хранить и обновлять массив в сеансе. используйте следующее:
session_start(); $_SESSION['youarray'] =$board;
и теперь обновляем в массиве $ _SESSION ['youarray'] в соответствии с вашим требованием, которое будет похоже на обычный массив. но хранится в сеансе.