2013-12-16 107 views
0

的其他语句是否有方法通过输入字段名称来编写if else语句?如果通过输入表单名称

我有一个循环动态创建9输入字段,

环路

for($i=0; $i<($n*$n); $i++){ 
    echo "<tr>"; 

for($j=0; $j<($n*$n); $j++){ 
     $number = "column".$i.$j; 

     if($i%$n==0 && $j%$n==0 && $j!==0 && $i!==0){ 
     echo "<td><input class='field' type='text' name=$number value=$_POST[$number]></td>"; 

     } 

和输出是这样的。

<input class="field" type="text" name="column00" value="1"> 
<input class="field" type="text" name="column01" value="2"> 
<input class="field" type="text" name="column02" value="1"> 
..... 
<input class="field" type="text" name="column09" value="3"> 

所以我试图做的是,如果有就行1 inputed号到9等于9 1行中的另一个数字,你会呼应的是,有多个号码,多数民众赞成彼此相等。

我试过这样的东西,但它不起作用。

if($number==$number){ 

echo = "equal number in the same row"; 

} 
+0

我看不出怎么说代码给出了这样的输出:)你在你的代码中创建一个表,它神奇地出来作为输入字段? –

+0

等一下,这是一个数独游戏吗? :) –

+0

@杰克你是正确的先生:) – Dymond

回答

1

制作一行所有输入的数组。然后执行:

$unique = array_unique($row_values); 
if (count($unique) != count($row_values)) { 
    echo "No duplicate numbers in a row!"; 
} 

对每列做同样的事情。

1

以这种形式使用的字段名称:

<input name="number[<row>][<column>]" ... 

所以,举例来说:

<input name="number[0][0]" value="1" /> 
<input name="number[0][1]" value="2" /> 
<input name="number[0][2]" value="5" /> 
<input name="number[0][3]" value="3" /> 
... 
<input name="number[1][0]" value="4" /> 
<input name="number[1][1]" value="9" /> 

当发布后,您会收到一个二维数组:

[[1, 2, 5, 3, ...], [4, 9, ...]] 

现在它基本上成为你必须解决的阵列问题:

  1. 所有的行和列
  2. 每个网格内的行和列

为了帮助您找到数组中的多次出现的值:

$multiples = array_filter(array_count_values($arr), function($freq) { 
    return $freq > 1; 
}); 

// outputs a non-empty array with the numbers that occur more than once. 
print_r(array_keys($multiples)); 
+0

谢谢杰克,我立刻就你的回答!欣赏。 – Dymond

相关问题