HTML-таблица — .next () в php показывает случайные пустые значения

У меня есть эта большая форма, которую я передаю через метод сообщения на страницу PHP .., в которой $POST переменная имеет 2 массива, которые могут немного отличаться друг от друга в зависимости от того, как пользователь заполняет форму, поэтому для этого я итерирую $POST переменная, чтобы увидеть, является ли он массивом, и если он является таблицей из значения, иногда .next Значение, кажется, не читает значение в одном массиве, но в другом оно читает его отлично.

Вот мой для каждого кода:

foreach($_POST as $var){
if(is_array($var)){
foreach($var as $x => $value){
if($value != ''){
switch ($x) {
case "nombreOtrosMeds":

$otrosMedicos.='
<table class="tg">
<tr>
<td class="tg-yw4l"><strong>Nombre: </strong> '.$value.'</td>
<td class="tg-yw4l"><strong>Dirección: </strong>'.next($var).'</td>
</tr>
<tr>
<td class="tg-yw4l"><strong>Teléfono: </strong>'.next($var).'</td>
<td class="tg-yw4l"><strong>Fax: </strong>'.next($var).'</td>
</tr>
</table>
';
break;
case "tipoCirugia":
$algunaCirugia.='
<table class="tg">
<tr>
<td class="tg-yw4l"><strong>Tipo de cirugía: </strong> '.$value.'</td>
<td class="tg-yw4l"><strong>Hospital: </strong>'.next($var).'</td>
<td class="tg-yw4l"><strong>Fecha de cirugía: </strong>'.next($var).'</td>
</tr>
</table>
';
break;
}
}

}

}
}

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

Tipo de cirugía: cirugia1 Hospital: Fecha de cirugía:
Tipo de cirugía: Cirugia2 Hospital: Hospital2 Fecha de cirugía: 2015-10-15

и массивы такие:

[1] => Array
(
[nombreOtrosMeds] =>
[dirOtrosMeds] =>
[telOtrosMeds] =>
[faxOtrosMeds] =>
[tipoCirugia] => cirugia1
[hospital] => hospital1
[fechaCirugia] => 2015-10-07
[tipoNoCirugia] => hospitalizacion1
[Nohospital] => hospital hospitalizacion1
[fechaNoCirugia] => 2015-10-04
[tomaMedNombre] =>
[tomaMedDosis] =>
[tipoDroga] => droga1
[cantidadDroga] => cantidad droga 1
[tiempoDroga] => timepo droga 1
[tipoDieta] =>
[cantidadPesodDieta] =>
[fechaDieta] =>
)

[cirugias] => Sí
[2] => Array
(
[tipoCirugia] => Cirugia2
[hospital] => Hospital2
[fechaCirugia] => 2015-10-15
[tipoNoCirugia] => Hospitalizacion2
[Nohospital] => Hospital Hospitalizacion2
[fechaNoCirugia] => 2015-10-13
[tipoDroga] => droga 2
[cantidadDroga] => cantidad droga 2
[tiempoDroga] => tempo droga 2
)

0

Решение

ОБНОВИТЬ (после комментарии):

Вы можете использовать следующий код. Переберите все ваши данные и проверьте, является ли первый элемент tipoCirugia так эхо соответственно. Если это какой-то другой столбец, то это означает, что пользователь опубликовал другие данные, поэтому выведите что-то другое.

$data = $_POST;
$i = 0;
foreach($data as $var) {
if (is_array($var)) {
$element = 0;
foreach($var as $key => $value) {
if ($key == 'tipoCirugia' && $element == 0) {
$otrosMedicos .= '
<table class="tg">
<tr>
<td class="tg-yw4l"><strong>Nombre: </strong> '.$data[$i]['tipoCirugia'].'</td>
</tr>
<tr>
<td class="tg-yw4l"><strong>Dirección: </strong>'.$data[$i]['hospital'].'</td>
</tr>
<tr>
<td class="tg-yw4l"><strong>Teléfono: </strong>'.$data[$i]['fechaCirugia'].'</td>
</tr>
</table>';
} elseif ($key == 'nombreOtrosMeds') {  //Here you have to make a change according what data you want to show
$algunaCirugia .= '
<table class="tg">
<tr>
<td class="tg-yw4l"><strong>Nombre: </strong> '.$data[$i]['nombreOtrosMeds'].'</td>
</tr>
<tr>
<td class="tg-yw4l"><strong>Dirección: </strong>'.$data[$i]['hospital'].'</td>
</tr>
<tr>
<td class="tg-yw4l"><strong>Teléfono: </strong>'.$data[$i]['fechaCirugia'].'</td>
</tr>
<tr>
<td class="tg-yw4l"><strong>Fax: </strong>'.$data[$i]['Nohospital'].'</td>
</tr>
</table>';
}
$element++;
}
}
$i++;
}
echo $otrosMedicos.'<br /><br />';
echo $algunaCirugia.'<br /><br />';

Выше должно повториться:

Nombre: Cirugia2
Dirección: Hospital2
Teléfono: 2015-10-15


Nombre:
Dirección: hospital1
Teléfono: 2015-10-07
Fax: hospital hospitalizacion1


старый ответить перед комментариями.

Я не могу понять, почему вы используете следующую функцию здесь, и вы сложным образом таким образом, но если вы добавите next($var):

foreach($_POST as $var) {
if (is_array($var)) {
next($var);
//Rest remains the same

Это будет эхом:

Tipo de cirugía: cirugia1  Hospital: 2015-10-07    Fecha de cirugía: hospitalizacion1
Tipo de cirugía: Cirugia2  Hospital: 2015-10-15    Fecha de cirugía: Hospitalizacion2

Также обратите внимание, что next () http://php.net/manual/en/function.next.php

продвигает внутренний указатель массива на одно место перед возвратом
значение элемента

Я думаю, что вы как бы неправильно использовали эту функцию здесь.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]