显示按标题分组的菜单-按分组的数组


display menu grouped by headings - array grouped by

我四处寻找分组依据,但没有发现任何有意义或有效的东西。

我想做一份菜单,把沙拉/披萨/意大利面等标题分组我把它保存到数据库中,并把它作为一个数组读取(我认为它被称为多维[如果你知道转储的数组被正确地称为什么,请告诉我id想知道]。

这是我的阵列转储

Array
(
    [heading] => Array
    (
        [0] => Salads
        [1] => Salads
        [2] => Pasta
    )
    [special] => Array
    (
        [0] => 
        [1] => 
        [2] => 
    )
    [item] => Array
    (
        [0] => Small Green
        [1] => Regular Caesar
        [2] => Baked Lasagna
    )
    [description] => Array
    (
        [0] => Grape tomatoes, onions, green peppers and cucumbers on the bed of crisp lettuce.
        [1] => Classic recipe with romaine lettuce and croutons
        [2] => With meat sauce, tomato vegetarian sauce or Alfredo sauce
    )
    [price] => Array
    (
        [0] => See Desc
        [1] => $5.99
        [2] => $9.69
    )
    [notes] => Array
    (
        [0] => Available in Small ($2.99), Regular ($5.99)
        [1] => 
        [2] => 
    )
    [submit_val] => Submit
)

im使用此作为php输出数据(减去mysql信息)

for($i = 0; $i < count($array['heading']); $i++) {
    ?>
    <tr>    <td colspan="2" align="center" class="section"><?=$array['heading'][$i]; ?></td></tr>
    <tr>    <td colspan="2">&nbsp;</td></tr>
    <tr>    <td class="selection"><b><?=$array['item'][$i]; ?>.
    </b>
    &nbsp;<i><?=$array['description'][$i]; ?></i><br>
    <SMALL><I><?=$array['special'][$i]; ?></I></SMALL><SMALL><?=$array['notes'][$i]; ?></SMALL>
    </td>
    <td class="selection" align="right" valign="top"><?=$array['price'][$i]; ?></td>
    </tr>
    <?
}// for i loop

这是菜单的屏幕截图

请注意,我有多个标题中的多个项目(标题相同,如各种披萨等)

提前感谢您为提供的任何帮助

您可以缓存最后一个标题并执行if语句:

<?php
$last_heading = '';
for($i = 0; $i < count($array['heading']); $i++) {
    if ($last_heading !== $array['heading'][$i]) { ?>
    <tr>    <td colspan="2" align="center" class="section"><?=$array['heading'][$i]; ?></td></tr>
    <?php $last_heading = $array['heading'][$i]; } // end if ?>
    <tr>    <td colspan="2">&nbsp;</td></tr>
    <tr>    <td class="selection"><b><?=$array['item'][$i]; ?>.
    </b>
    &nbsp;<i><?=$array['description'][$i]; ?></i><br>
    <SMALL><I><?=$array['special'][$i]; ?></I></SMALL><SMALL><?=$array['notes'][$i]; ?></SMALL>
    </td>
    <td class="selection" align="right" valign="top"><?=$array['price'][$i]; ?></td>
    </tr>
    <?
}// for i loop

这确实假设你所有的标题都会像那样排列整齐。

假设您通过数据库中的标题对结果进行分组,这将使同一标题的所有项目保持在一起,那么您可能会使用以下方法:

<?php    
    for($i = 0; $i < count($array['heading']); $i++) {
        if($array['heading'][$i] != $array['heading'][$i-1]){ // Compare headings
?>
    <tr>    <td colspan="2" align="center" class="section"><?=$array['heading'][$i]; ?></td></tr>
<?php 
        } //endif compare 
?>
    <tr>    <td colspan="2">&nbsp;</td></tr>
    <tr>    <td class="selection"><b><?=$array['item'][$i]; ?>.</b>
    &nbsp;<i><?=$array['description'][$i]; ?></i><br>
    <SMALL><I><?=$array['special'][$i]; ?></I></SMALL><SMALL><?=$array['notes'][$i]; ?></SMALL>
    </td>
    <td class="selection" align="right" valign="top"><?=$array['price'][$i]; ?></td>
    </tr>
<?
    }// for i loop
?>