Массивы $ _POST строят новый массив из цикла foreach - PullRequest
0 голосов
/ 24 января 2012

У меня есть некоторые значения в моем $ _POST, которые находятся там в своих собственных массивах, подобных этому,

array(
   ['conviction_date'] = array(
      [0] => 12/01/2011
      [1] => 22/12/2011
   )
   ['conviction_description'] = array(
      [0] => This some text to show what the conviction was for etc.
      [1] => This is some more text to show what the second convication was for
   )
)

Что я хочу знать, так это то, как я могу циклически проходить по указанным массивам, чтобы я мог ценить изодин соответствует значению другого с помощью клавиш там?

Это так просто:

foreach ($_POST['conviction_date'] as $k => $v) {
    $newArray[] = array(
       'conviction_date' => $v,
       'conviction_details' => $_POST['conviction_details'][$k]
    )
}

Будет ли это затем выводить что-то следующее?

array(
    [0] => array(
      'conviction_date' => 12/01/2011
      'conviction_details' => This is some to show what the conviction was for etc.
    ),
    [1] => array()
      'conviction_date' => 22/11/2011
      'conviction_details' => This is some more text to show what the second convication was for
    )

Можно ли построить более простой массив?

Ответы [ 3 ]

1 голос
/ 24 января 2012

Изменить форму может быть проще:

<form method="post" action="">
<input type="text" name="conviction_date[]">
<input type="text" name="conviction_details[]">
</form>

if (isset($_POST) { var_dump($_POST); }
0 голосов
/ 24 января 2012

В вашем образце кода есть несколько ошибок, например, дата осуждения: 12/01/2011, вероятно, должно быть '12 / 01/2011 '.

Кроме того, предложенное решение кажется подходящим.В качестве альтернативы, если каждая дата для ряда убеждений уникальна (!), Вы также можете использовать эту дату в качестве ключа (например, в качестве UNIX-отметки времени или в формате ГГГГММДД).Извлечение данных будет таким простым:

foreach ($convictions as $date => $description) { ... }
0 голосов
/ 24 января 2012

Может быть проще дать имена параметров, чтобы php создавал массив типа

array( 'conviction'=>array(
  0=>array('date'=..., 'details'=>...),
  1=>array('date'=..., 'details'=>...),
  ...
);

Тогда вы можете сделать что-то вроде

foreach( $_POST['conviction'] as $c ) {
    echo $c['date'], ' ', $c['details'], "\n";
}

Простая демонстрационная форма:

<form method="post" action="...">
    <fieldset><legend>0</legend>
        <input type="text" name="conviction[0][date]">
        <input type="text" name="conviction[0][details]">
    </fieldset>
    <fieldset><legend>1</legend>
        <input type="text" name="conviction[1][date]">
        <input type="text" name="conviction[1][details]">
    </fieldset>
    ...
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...