如何在PHP/CakePHP中将关联数组转换为一组HTML表行


How to transform an associative array into a set of HTML table rows in PHP / CakePHP?

此类型图像上的表数据我的阵列是打印的$otaDetails

Array ( [0] => Array ( [OtherOtaBooking] => Array ( [id] => 1 [listing_id] => 0 [event_id] => 123testing [first_name] => [last_name] => [email_id] => [phone_number] => 0 [title] => [checkin] => 0000-00-00 [checkout] => 0000-00-00 [no_of_guests] => 0 [amount_paid] => 0 [amount_rec] => 0 [reservation_id] => 0 [booking_src] => ) ) [1] => Array ( [OtherOtaBooking] => Array ( [id] => 2 [listing_id] => 0 [event_id] => 123testing [first_name] => testamar 12 [last_name] => [email_id] => aaaaa@gmail.com [phone_number] => 2147483647 [title] => CasaMelhor: 2BHK in Candolim:CM001 [checkin] => 2015-12-16 [checkout] => 2015-12-17 [no_of_guests] => 21 [amount_paid] => 2147483647 [amount_rec] => 111111 [reservation_id] => 0 [booking_src] => asdddddddd ) )

我想以表格格式打印

<?php 
foreach ($otaDetails as $otaDetail){
    echo'<tbody>';
    echo'<tr>'; 
    echo'<td>'. $otaDetail['id']."</td>";
    echo'<td>'. $otaDetail['listing_id'].'</td>';
    echo'<td>'. $otaDetail['first_name'].'</td>';
    echo'<td>'. $otaDetail['last_name'].'</td>';
    echo'<td>'. $otaDetail['email_id'].'</td>';
    echo'<td>'. $otaDetail['phone_number'].'</td>';
    echo'<td>'. $otaDetail['title'].'</td>';
    echo'<td>'. $otaDetail['checkin'].'</td>';
    echo'<td>'. $otaDetail['checkout'].'</td>';
    echo'<td>'. $otaDetail['no_of_guests'].'</td>';
    echo'<td>'. $otaDetail['amount_paid'].'</td>';
    echo'<td>'. $otaDetail['amount_rec'].'</td>';
    echo'<td>'. $otaDetail['reservation_id'].'</td>';
    echo'<td>'. $otaDetail['booking_src'].'</td>';
    echo'<tr>';
    echo'</tbody>';
}
?>

然而,这给出了错误:-

未定义的索引:id[APP''Plugin''PropManagement''View''Otherbookings ''index.ctp,第59行]

试试我的代码它的工作$otaDetail是一个多维数组,所以你需要像$otaDetail['OtherOtaBooking'][index] 一样使用

  <?php foreach ($otaDetails as $otaDetail){
                                        echo'<tr>'; 
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['id']."</td>";
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['listing_id'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['first_name'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['last_name'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['email_id'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['phone_number'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['title'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['checkin'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['checkout'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['no_of_guests'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['amount_paid'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['amount_rec'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['reservation_id'].'</td>';
                                        echo'<td>'. $otaDetail['OtherOtaBooking']['booking_src'].'</td>';
                                        echo'</tr>';
                                        }
                                        ?>

如果您正在使用CakePHP(正如您所提到的),您可以通过发出来获得相同的结果

<tbody>
    <?=$this->Html->tableCells(Hash::extract($otaDetails,'{n}.OtherOtaBooking'))?>
</tbody>

您可以使用$this->OtherOtaBooking->find()中的$fields选项筛选要打印的列。

您的问题是数组是多维的,并且在迭代父数组时试图引用子数组的键。

试试这个:

<?php foreach ($otaDetails as $otaDetail){
                                    echo'<tr>'; 
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['id']."</td>";
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['listing_id'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['first_name'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['last_name'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['email_id'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['phone_number'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['title'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['checkin'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['checkout'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['no_of_guests'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['amount_paid'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['amount_rec'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['reservation_id'].'</td>';
                                    echo'<td>'. $otaDetail['OtherOtaBooking']['booking_src'].'</td>';
                                    echo'<tr>';
                                    }
                                    ?>

当然,如果您有多个子数组,只需在现有循环中运行foreach循环即可。

检查您的最后一个<tr>标记。关闭</tr>

<?php foreach ($otaDetails as $otaDetail){
                                    echo'<tbody>';
                                    echo'<tr>'; 
                                    echo'<td>'. $otaDetail['id']."</td>";
                                    echo'<td>'. $otaDetail['listing_id'].'</td>';
                                    echo'<td>'. $otaDetail['first_name'].'</td>';
                                    echo'<td>'. $otaDetail['last_name'].'</td>';
                                    echo'<td>'. $otaDetail['email_id'].'</td>';
                                    echo'<td>'. $otaDetail['phone_number'].'</td>';
                                    echo'<td>'. $otaDetail['title'].'</td>';
                                    echo'<td>'. $otaDetail['checkin'].'</td>';
                                    echo'<td>'. $otaDetail['checkout'].'</td>';
                                    echo'<td>'. $otaDetail['no_of_guests'].'</td>';
                                    echo'<td>'. $otaDetail['amount_paid'].'</td>';
                                    echo'<td>'. $otaDetail['amount_rec'].'</td>';
                                    echo'<td>'. $otaDetail['reservation_id'].'</td>';
                                    echo'<td>'. $otaDetail['booking_src'].'</td>';
                                    echo'</tr>';
                                    echo'</tbody>';
                                    }
                                    ?>
<tbody>
    <?php foreach ($otaDetails as $otaDetail){
        echo'<tr>'; 
            echo'<td>'. $otaDetail['OtherOtaBooking']['id']."</td>";
            echo'<td>'. $otaDetail['OtherOtaBooking']['listing_id'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['first_name'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['last_name'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['email_id'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['phone_number'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['title'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['checkin'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['checkout'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['no_of_guests'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['amount_paid'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['amount_rec'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['reservation_id'].'</td>';
            echo'<td>'. $otaDetail['OtherOtaBooking']['booking_src'].'</td>';
        echo'</tr>';
    }
    ?>
</tbody>

用这行替换代码行

echo'<td>'. $otaDetail['OtherOtaBooking']['id']."</td>"

你会得到答案的您忘记再添加一个索引,即[OtherOtaBooking]