У меня есть эта большая форма, которую я передаю через метод сообщения на страницу 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
)
ОБНОВИТЬ (после комментарии):
Вы можете использовать следующий код. Переберите все ваши данные и проверьте, является ли первый элемент 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
продвигает внутренний указатель массива на одно место перед возвратом
значение элемента
Я думаю, что вы как бы неправильно использовали эту функцию здесь.
Других решений пока нет …