2013-07-05 3 views
1

Пожалуйста, попробуйте внимательно прочитать, потому что это не просто объяснить. У меня есть форма, содержащая различные входы с одинаковыми именами. Вот почему я группируя их, как на примере ниже:PHP checkboxes группа другой группы имен

<input class="" type="text" name="photoname[]"/> 
<input class="" type="text" name="photodescription[]"/> 
<input value="121001392" name="protagonist[][]" type="checkbox"/> 
<input value="121001393" name="protagonist[][]" type="checkbox"/> 
<input value="121001394" name="protagonist[][]" type="checkbox"/> 
<input value="121001395" name="protagonist[][]" type="checkbox"/> 

Теперь группы работают нормально. Проблема заключается в флажках, потому что они должны быть сначала сгруппированы с индексом других полей ввода, а затем с их собственным индексом. Вот почему для beckboxes я пытался использовать двойную группу, такую ​​как [][] Но данный массив ошибочен, и флажки не сгруппированы правильно. Это результат:

Array 
(

    [photoname] => Array 
     (
      [0] => 8e98ee38864e74a9d5abf45edb263b8f 
      [1] => 16fb2761e8cbe6eb877b2af8a95441dd 
     ) 

    [protagonist] => Array 
     (
      [0] => Array 
       (
        [0] => 121001392 
       ) 

      [1] => Array 
       (
        [0] => 121001393 
       ) 

      [2] => Array 
       (
        [0] => 121001394 
       ) 

      [3] => Array 
       (
        [0] => 121001395 
       ) 

     ) 

    [photodesc] => Array 
     (
      [0] => example 
      [1] => example 
     ) 

) 

Но ожидаемый результат должен быть следующим:

Array 
(

    [photoname] => Array 
     (
      [0] => 8e98ee38864e74a9d5abf45edb263b8f 
      [1] => 16fb2761e8cbe6eb877b2af8a95441dd 
     ) 

    [protagonist] => Array 
     (
      [0] => Array 
       (
        [0] => 121001392 
        [1] => 121001393 

       ) 

      [1] => Array 
       (
        [0] => 121001394 
        [1] => 121001395 
       ) 

    [photodesc] => Array 
     (
      [0] => example 
      [1] => example 
     ) 

) 

В ожидаемом результате первый индекс является индексом всех других входов в форме и детей index - это индекс каждого выбранного флажка. Таким образом, я могу зацикливать массив и назначить отмеченные флажки на основе родительского индекса ... Как это можно добиться?

+0

вы должны заполнить в первую [] сами – hynner

+0

@hynner я уже пытался, но результат не так или иначе , Также все это основано на javascript. Так что будет сложно узнать точные индексы –

+0

хорошо, если вы автоматически создадите форму с помощью javascript, заполните сами индексы для других полей, так что вы можете сохранить их соответствие – hynner

ответ

0
<input class="" type="text" name="photoname[]"/> 
<input class="" type="text" name="photodescription[]"/> 
<input value="121001392" name="protagonist[0][]" type="checkbox"/> 
<input value="121001393" name="protagonist[0][]" type="checkbox"/> 
<input value="121001394" name="protagonist[1][]" type="checkbox"/> 
<input value="121001395" name="protagonist[1][]" type="checkbox"/> 

Вы должны назвать свои группы.[] означает несколько значений в одной группе. Но [][] не будет работать. Он должен быть [group1][] или [group2][].

1

Поведение, которое вы получаете, точно совпадает с тем, что вы должны ожидать при использовании [][] при создании элементов в двумерном массиве «на лету». Если вы не укажете первый индекс, вы автоматически создадите новое значение для первого индекса каждый раз.

Если нужно сгруппировать эти значения, вам нужно будет указать первый индекс, как этот

<input value="121001392" name="protagonist[0][]" type="checkbox"/> 
<input value="121001393" name="protagonist[0][]" type="checkbox"/> 
<input value="121001394" name="protagonist[1][]" type="checkbox"/> 
<input value="121001395" name="protagonist[1][]" type="checkbox"/> 
+0

Проблема в том, что все это управляется с помощью javascript. Группы полей можно удалить. Таким образом, в этом случае индексы больше не будут обрабатываться ... –

+0

@DiegoPucci. Хорошо, какой бы ни был JavaScript, который вы используете для динамического создания этих входных данных, нужно будет понимать отношение внутри групп полей и обрабатывать вещи соответствующим образом. –

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