0

毎週の授業スケジュールをリスト形式で出力するために使用されるワードプレスのウィジェットを修正しています。このコードは現在のように、平日ごとに出力され、その日のクラス情報が出力されます。問題は、クラスのない日があっても、その日の名前がエコーされることです。配列内にデータが含まれていない $weekday のエコーをスキップしたい。コードは次のとおりです。

<?php
/**
 * @file
 * Output view template.
 *
 * Available Variables:
 * - $weekday_names: Array of weekday names to be used in table output.
 * - $weekdays: Array of used weekdays based on user preference.
 * - $start_hours: Array of unique start hours.
 * - $classes: Multi-dimensional array in the structure of $classes[weekday][start_hour].
 */
?>

<div id="wcs-schedule-list"> 
    <?php foreach ( $weekdays as $weekday ): ?>
    <h3><?php echo $weekday; ?></h3>
    <div class="list-container">
        <ul class="wcs-schedule-list">
        <?php foreach ( $start_hours as $start_hour ): ?>
        <?php echo WcsSchedule::model()->renderListItem( $classes, $start_hour, $weekday ) ?>
        <?php endforeach; ?>
        </ul>
    </div>
    <?php endforeach; ?>
</div>

どんな助けでも大歓迎です!

これはvar_dump($start_hours);、空の $weekday の です。

Tuesday

array(6) { [1]=> string(8) "12:00 pm" [6]=> string(7) "2:00 pm" [4]=> string(7) "3:30 pm" [5]=> string(7) "6:00 pm" [2]=> string(7) "7:00 pm" [0]=> string(7) "8:15 pm" } array(6) { [1]=> string(8) "12:00 pm" [6]=> string(7) "2:00 pm" [4]=> string(7) "3:30 pm" [5]=> string(7) "6:00 pm" [2]=> string(7) "7:00 pm" [0]=> string(7) "8:15 pm" } array(6) { [1]=> string(8) "12:00 pm" [6]=> string(7) "2:00 pm" [4]=> string(7) "3:30 pm" [5]=> string(7) "6:00 pm" [2]=> string(7) "7:00 pm" [0]=> string(7) "8:15 pm" } array(6) { [1]=> string(8) "12:00 pm" [6]=> string(7) "2:00 pm" [4]=> string(7) "3:30 pm" [5]=> string(7) "6:00 pm" [2]=> string(7) "7:00 pm" [0]=> string(7) "8:15 pm" } array(6) { [1]=> string(8) "12:00 pm" [6]=> string(7) "2:00 pm" [4]=> string(7) "3:30 pm" [5]=> string(7) "6:00 pm" [2]=> string(7) "7:00 pm" [0]=> string(7) "8:15 pm" } array(6) { [1]=> string(8) "12:00 pm" [6]=> string(7) "2:00 pm" [4]=> string(7) "3:30 pm" [5]=> string(7) "6:00 pm" [2]=> string(7) "7:00 pm" [0]=> string(7) "8:15 pm" } 
4

3 に答える 3

1

他の2つの答えは間違っています。空であっても、その日は出力されます。どうぞ:

<div id="wcs-schedule-list"> 
    <?php foreach ( $weekdays as $weekday ): ?>
    <?php if (empty($classes[$weekday])) continue; ?>
    <h3><?php echo $weekday; ?></h3>
    <div class="list-container">
        <ul class="wcs-schedule-list">
        <?php foreach ( $start_hours as $start_hour ): ?>
        <?php echo WcsSchedule::model()->renderListItem( $classes, $start_hour, $weekday ) ?>
        <?php endforeach; ?>
        </ul>
    </div>
    <?php endforeach; ?>
</div>

$classes[$weekday]この回答は、指定されたに何もスケジュールされていない場合は空であると想定してい$weekdayます。

于 2013-03-20T04:42:47.067 に答える
0
<?php
echo '<div id="wcs-schedule-list"> ';
foreach ( $weekdays as $weekday ){
//you need to add a check with WcsSchedule first, to see if this $weekday has any classes before you begin outputting anything
    echo "<h3>$weekday</h3>";
    echo '<div class="list-container">';
    foreach ( $start_hours as $start_hour ) {
        echo '<ul class="wcs-schedule-list">';
        echo WcsSchedule::model()->renderListItem( $classes, $start_hour, $weekday );
    }
    echo "</ul>";
    echo "</div>";
}
echo "</div>";
?>

これは完全ではありません。使用方法がよくわからないため、微調整する必要がありますが、最初に、モデルを使用しているクラスがあるかどうかを確認する必要があります。

その日のクラスがあるかどうかを確認してそこから進む方法を考え出すか、上記のように、何かを出力する前にstart_hoursをループする必要があります。そのforループで、モデルから何かが返されるかどうかを確認し、そこから移動します。

于 2013-03-20T04:43:59.210 に答える
0
<?php foreach ( $weekdays as $weekday ): ?>
<h3><?php echo $weekday;
    if(isset($weekday) && !empty($weekday)) { 
 ?></h3>
<div class="list-container">
    <ul class="wcs-schedule-list">
    <?php foreach ( $start_hours as $start_hour ): ?>
    <?php echo WcsSchedule::model()->renderListItem( $classes, $start_hour, $weekday ) ?>
    <?php endforeach; ?>
    </ul>
</div>
<?php } endforeach; ?>
于 2013-03-20T04:37:26.040 に答える