【问题标题】:How to print multidimensional array in two different html table in PHP?如何在 PHP 中的两个不同的 html 表中打印多维数组?
【发布时间】:2015-06-17 02:08:54
【问题描述】:

这是我的数组:

Array
(
    [status] => OK
    [result] => Array
        (
            [pnr] => 4106121148
            [cls] => SL
            [eticket] => 1
            [journey] => 17-Apr-2015
            [trainno] => 16629
            [name] => MALABAR EXP
            [from] => CNGR
            [to] => MAQ
            [brdg] => CNGR
            [passengers] => Array
                (
                    [0] => Array
                        (
                            [bookingstatus] => S10  41GN
                            [currentstatus] => CNF
                            [coach] => 
                        )

                    [1] => Array
                        (
                            [bookingstatus] => S10  42GN
                            [currentstatus] => CNF
                            [coach] => 
                        )

                    [2] => Array
                        (
                            [bookingstatus] => S10  43GN
                            [currentstatus] => CNF
                            [coach] => 
                        )

                )

            [chart] => CHART NOT PREPARED
            [error] => 
        )

)

我尝试将其打印到两个不同的 html 表 tr。

if($responseArray['status'] === 'OK') {

        $pnr= '<tr>';
        $pnr.= '<td>'.$responseArray['result']['pnr'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['journey'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['name'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['trainno'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['cls'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['from'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['brdg'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['to'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['chart'].'</td>';
        $pnr.= '</tr>';

       $i=0;
       foreach($responseArray['result']['passengers'] as $passengers){
            $i++;
            $psngr='<tr>';
            $psngr.= '<td>Pasenger No '.$i;.'</td>';
            $psngr.= '<td>'.$passengers['bookingstatus'].'</td>';
            $psngr.= '<td>'.$passengers['currentstatus'].'</td>';
            $psngr.='</tr>';
        }

        echo $pnr.'#'.$psngr;
}

我连接两个表 tr 字符串并打印。第一个字符串 ($pnr) 打印正常。在第二个字符串 ($psngr) 中,我有三个值,但只打印最后一个值,即

<tr><td>Pasenger No 3</td><td>S10  43GN</td><td>CNF</td></tr>

应该是

<tr><td>Pasenger No 1</td><td>S10  41GN</td><td>CNF</td></tr>
<tr><td>Pasenger No 2</td><td>S10  42GN</td><td>CNF</td></tr>
<tr><td>Pasenger No 3</td><td>S10  43GN</td><td>CNF</td></tr>

【问题讨论】:

    标签: php arrays multidimensional-array foreach html-table


    【解决方案1】:

    每次迭代都会覆盖表格行变量。将代码更改为以下应该可以工作(注意 foreach 部分):

    if($responseArray['status'] === 'OK') {
    
        $pnr= '<tr>';
        $pnr.= '<td>'.$responseArray['result']['pnr'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['journey'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['name'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['trainno'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['cls'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['from'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['brdg'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['to'].'</td>';
        $pnr.= '<td>'.$responseArray['result']['chart'].'</td>';
        $pnr.= '</tr>';
    
       $i=0;
       $psngr = '';
       foreach($responseArray['result']['passengers'] as $passengers){
            $i++;
            $psngr.='<tr>';
            $psngr.= '<td>Pasenger No '.$i;.'</td>';
            $psngr.= '<td>'.$passengers['bookingstatus'].'</td>';
            $psngr.= '<td>'.$passengers['currentstatus'].'</td>';
            $psngr.='</tr>';
        }
    
        echo $pnr.'#'.$psngr;
    }
    

    【讨论】:

    • 同样的结果@tworabbits
    • 我实际上无法想象您会得到相同的结果 :) 另一个问题是:当您打印表格时,哈希到底代表什么?
    • 4106121148 17-Apr-2015 MALABAR EXP 16629 SL CNGR CNGR MAQ 未准备图表 # 3号乘客 S10 43GN CNF
    • 您是使用纯 php 还是您的代码由可能缓存您的输出的库运行?
    【解决方案2】:

    试试 -

    $psngr .= '<tr>';
    

    并将$psngr = ''; 放在外循环之外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2014-04-13
      • 1970-01-01
      • 2019-12-02
      • 2013-02-28
      相关资源
      最近更新 更多