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

我认为您有点误用了这里的这个特定功能。