php 中的 .next() 显示随机空白值
.next() in php shows random blank values
我有一个大表格,我通过 post 方法传递给 PHP 页面。其中 $POST
变量有 2 个数组,可能与彼此取决于用户如何填写表单,因此我从 $POST
变量迭代以查看它是否是一个数组,如果它是然后从值中生成 table,有时是这样.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
)
更新(在评论之后):
您可以使用以下代码。遍历所有 post 数据并检查第一个元素是否为 tipoCirugia
以便适当地回显。如果它是其他列,那么这意味着用户有 post 不同的数据,所以回显不同的东西。
$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 函数,并且以这种方式使事情变得复杂,但是如果你添加 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
advances the internal array pointer one place forward before returning
the element value
我认为您有点误用了这里的这个特定功能。
我有一个大表格,我通过 post 方法传递给 PHP 页面。其中 $POST
变量有 2 个数组,可能与彼此取决于用户如何填写表单,因此我从 $POST
变量迭代以查看它是否是一个数组,如果它是然后从值中生成 table,有时是这样.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
)
更新(在评论之后):
您可以使用以下代码。遍历所有 post 数据并检查第一个元素是否为 tipoCirugia
以便适当地回显。如果它是其他列,那么这意味着用户有 post 不同的数据,所以回显不同的东西。
$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 函数,并且以这种方式使事情变得复杂,但是如果你添加 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
advances the internal array pointer one place forward before returning the element value
我认为您有点误用了这里的这个特定功能。