【问题标题】:Create and sort array to arrange events by time创建和排序数组以按时间安排事件
【发布时间】:2015-09-22 15:34:58
【问题描述】:

我必须使用的数据如下所示:

<div><strong><?php echo $form_data['field'][86]);?></strong> - Guests find seats</div>
<div><strong><?php echo $form_data['field'][87];?></strong> - Bridal party introductions</div>
<div><strong><?php echo $form_data['field'][88];?></strong> - Dinner is served</div>
<div><strong><?php echo $form_data['field'][92];?></strong> - Cake cutting</div>
<div><strong><?php echo $form_data['field'][96];?></strong> - Speeches</div>
<div><strong><?php echo $form_data['field'][188];?></strong> - Blessing</div>
<div><strong><?php echo $form_data['field'][107];?></strong> - First Dances</div>

但示例数据很少是一致的。例如,可能没有切蛋糕,显示的顺序也不正确。

但是,$form_data 值始终是 24 小时格式(即 14:00、03:30 等)

我希望能够获取所有现有字符串(无论哪个不为空)并创建一个包含时间和事件类型的数组,然后以正确的顺序回显输出。)

所以数组总是包含这 7 个字符串值,但有时可能只有 5 或 6 个是相关的。

感谢您提供的任何帮助。

【问题讨论】:

    标签: php arrays sorting usort


    【解决方案1】:

    这个想法怎么样。我想我听懂了你的问题,但如果我错过了什么,请不要打我。

    编写一个小 PHP 以从 $form_data 数组中的相关项目创建一个单独的数组,并将标签也添加到该数组中,以便您知道要在页面上放置什么

    <?php
        $pickupList = array(86  => 'Guests find seats',
                            87  => 'Bridal party introductions',
                            88  => 'Dinner is served',
                            92  => 'Cake cutting',
                            96  => 'Speeches',
                            188 => 'Blessing',
                            107 => 'First Dances'
                           );
    
        $event_order = array();
    
        foreach ( $pickupList as $key=> $label ) {
    
            if ( $form_data['field'][$key] != '' ) {
                $event_order[$form_data['field'][$key]]  = $label;
            }
        }  
    
        ksort($event_order);    // sort on key which is a time 12:15
    
        foreach ( $event_order as $time => $event) {
            echo '<div><strong>';
            echo $time;
            echo '</strong> - ';
            echo $event;
            echo '</div>';
        }
    

    【讨论】:

    • 太棒了!我只是在使用 ksort(或 asort)解决问题,但我没有为字符串值是否应包含在数组中创建条件。谢谢!
    • 一个建议。您还可以将字段 id 的数组指定为文本字符串并循环遍历该数组以构建 $event_order。这将使代码更短,更易于维护。
    • 这是一个很好的建议。在我的特定情况下,我的字段 id 到处都是,所以循环会选择我不想包含在这个特定时间表中的项目。但在更简洁的代码场景中,这将是完美的!
    • @Phil_1984_ 我试图让提问者容易理解,但我不得不承认,如果我正在编写它,我会使用一个数组来控制拾取列表,所以我改变了答案因此。感谢您的推动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多