Here my array:
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] =>
)
)
I try to print this to two different html table 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;
}
I concatenate two table tr string and print. First string ( $pnr
) prints fine. In second string ( $psngr
) I have three values but print last value only ie
<tr><td>Pasenger No 3</td><td>S10 43GN</td><td>CNF</td></tr>
It should be
<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>
You are overwriting your table row variable with each iteration. Change the code to the following should work (note the foreach part):
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;
}
Try with -
$psngr .= '<tr>';
And put $psngr = '';
ouside the outer loop.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.