PHPの勉強がてら、ハノイの塔を作っています。
・3列のハノイの塔($box1,$box2,$box3)
// 初期値を設定 $box1 = array(5,4,3,2,1); $box2 = array(); $box3 = array();
・「右へ移動」ボタンを押せば、初期値の配列の先頭の値が1つpostされ、$box2 に移動する。
// この状態になる $box1 = array(4,3,2,1) $box2 = array(5)
###【ここからはまってます!】
・連続してpost(「右へ移動」ボタンをクリック)したときに、
配列の先頭の値が移動してくれません。
PHP, HTMLの何が理解できていないのかヒントを頂けると幸いです。
// 連続でpostしたときに↓のようになって欲しい $box1 = array(3,2,1) $box2 = array(4,5)
lang
1<html> 2<table> 3<tr> 4 <td class="box"> 5 <form action="index.php" method="post"> 6 <input type="submit" name="box1" value="右に移動"> 7 </form> 8 </td> 9 <td class="box"> 10 <form action="index.php" method="post"> 11 <input type="submit" name="box2_left" value="左に移動"> 12 <input type="submit" name="box2_right" value="右に移動"> 13 </form> 14 </td> 15 <td class="box"> 16 <form action="index.php" method="post"> 17 <input type="submit" name="box3" value="左に移動"> 18 </form> 19 </td> 20</tr> 21</table> 22</html> 23 24<?php $box1 = array(1,2,3,4,5); ?> 25<?php $box2 = array(); ?> 26<?php $box3 = array(); ?> 27 28<?php if (isset($_POST["box1"])): ?> 29 <?php $box_take = array_shift($box1); ?> 30 <?php array_unshift($box2, $box_take); ?> 31 <table> 32 <tr> 33 <td class='box'> 34 <?php foreach ($box1 as $box1_result): ?> 35 <?php echo $box1_result."<br>"; ?> 36 <?php endforeach; ?> 37 </td> 38 39 <?php if(isset($box2)): ?> 40 <td class='box'> 41 <?php foreach ((array)$box2 as $box2_result): ?> 42 <?php echo $box2_result."<br>"; ?> 43 <?php endforeach; ?> 44 </td> 45 <?php endif; ?> 46 47 <?php if(isset($box3)): ?> 48 <td class='box'> 49 <?php foreach ((array)$box3 as $box3_result): ?> 50 <?php echo $box3_result."<br>"; ?> 51 <?php endforeach; ?> 52 </td> 53 <?php endif; ?> 54 </tr> 55 </table> 56<?php elseif (isset($_POST["box2_left"])): ?> 57 <?php $box_take = array_shift($box2); ?> 58 <?php array_unshift($box1, $box_take); ?> 59 <?php foreach ($box1 as $box1_result): ?> 60 <?php echo $box1_result."<br>"; ?> 61 <?php endforeach; ?> 62 63 <?php if(isset($box2)): ?> 64 <?php foreach ((array)$box2 as $box2_result): ?> 65 <div class="box"> 66 <?php echo $box2_result."<br>"; ?> 67 </div> 68 <?php endforeach; ?> 69 <?php endif; ?> 70 71(以下略) 72
lang
1.box{ 2 float: left; 3}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/27 02:20
2017/02/27 02:35
2017/02/27 02:40
2017/02/28 15:46