2016-03-27 8 views
0

PHPで「Lights Out」と呼ばれる小さなゲームを作成する必要があります.5x5行列を作成することから始まり、すべての要素はランダムにする必要がありますPHP - 配列要素を隠しフォームの値として使用することはできません

後でファイルを処理し、ラジオ入力で選択したオプション(オンまたはオフ)にアクセスする場合、ラジオが示されたセルを知る必要があります。私は自分の値に次のものを追加しようとしました:[$row][$column]、それは動作していないようです(エラーIllegal offset type)。

誰でもこのエラーが発生する理由を教えていただけますか?私は本当にラジオが示された行と列を知る必要があります。

ありがとうございます!

<form action="Processing.php" method="post"> 
    <?php 
     $matrix = array(
      array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
      array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
      array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
      array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
      array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)) 
     ); 

     echo "<table border=\"1\">"; // echo matrix in a html table 
     foreach ($matrix as $row) { // rows 
      echo "<tr>"; 
      foreach ($row as $column) { // columns 
       echo "<td>"; 
       echo $column . "<br />"; 
       echo "<input type=\"radio\" name=\"I_O\" value=\"O $matrix[$row][$column]\" /> O"; // off 
       echo "<br />"; 
       echo "<input type=\"radio\" name=\"I_O\" value=\"I $matrix[$row][$column]\" /> I"; // on 
       echo "</td>"; 
      } 
      echo "</tr>"; 
     } 
     echo "</table>"; 
    ?></form> 
+0

オフセットが必要な場合は、$ xはオフセット/インデックス、$ rowはデータです – iautomation

+0

ありがとうございます@ iautomation、しかし、私は隠しフォームの値で行番号と列番号を実装する必要がありますか? –

+0

下の回答のように見えます – iautomation

答えて

0

あなたforeach構造は唯一のあなたに値を与えているが、あなたは、配列のインデックスとしてそれらを使用しています。私は(まだテストせず)、わずかにそれをchengedましたが、これは一緒にあなたを助ける必要があります:編集

<form action="Processing.php" method="post"> 
<?php 
    $matrix = array(
     array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
     array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
     array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
     array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)), 
     array(rand(0,1), rand(0,1), rand(0,1), rand(0,1), rand(0,1)) 
    ); 

    echo "<table border=\"1\">"; // echo matrix in a html table 
    foreach ($matrix as $rowIx => $row) { // rows 
     echo "<tr>"; 
     foreach ($row as $columnIx => $val) { // columns 
      $checked = $val ? 'checked="checked" ' : ''; 
      echo "<td>"; 
      echo $val . "<br />"; 
      echo "<input type=\"radio\" name=\"I_O\" $checked value=\"{$rowIx},{$columnIx}\" />"; 
      echo "</td>"; 
     } 
     echo "</tr>"; 
    } 
    echo "</table>"; 
?></form> 

:ラジオボタンの値は行列にカンマで区切られた行と列のインデックスなりました。

+0

これは申し訳ありませんが、これは私が探しているものではありません。 Processing.phpにラジオの値を投稿すると、ラジオがチェックされた行と列の番号を取得したいと思います。 –

+0

私はあなたに "rowIx、columnIx"を与えるように変更しました。サーバー側の処理。値を別々の変数に戻すために、 'list($ rowIx、$ columnIx)= explode( '、'、$ _POST ['I_O']);'を使うことができます。 – Kris

関連する問題