2013-12-16 6 views
0

Есть ли способ написать оператор if else по имени поля ввода?Если инструкции 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 до 9, что равно другого номера в строке 1 до 9 будет эхом, что есть более чем один номер Thats равные друг другу.

Я пробовал что-то вроде этого, но это не сработало.

if($number==$number){ 

echo = "equal number in the same row"; 

} 
+0

Я не могу видеть, как это код дает такой вывод :) вы строите таблицу в своем коде, и она волшебным образом выходит в качестве полей ввода? –

+0

Подождите, это игра судоку, если это возможно? :) –

+0

@Jack вы правы sir :) – 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

Смежные вопросы