【问题标题】:Outputting HTML with "variable" Wrapper Class使用“变量”包装类输出 HTML
【发布时间】:2014-07-28 21:26:48
【问题描述】:

我在循环数组、显示格式化的 HTML 显示以及 CSS 样式方面需要帮助。但主要问题是:我无法弄清楚如何调整正确的包装方式并选择包装类的名称。因为我需要循环数组才能找到正确的类名。

换句话说:我需要计算“今天”和过期日期之间的时间量,如果太接近过期,我想将包装类更改为“nearExpire”,否则不要更改它.但由于计算是在包装回声之后,我不能调用尚未声明的变量。所以我尝试附加循环值然后包装它,但它没有工作,因为循环不断重复值。

对不起,如果我不清楚,英语不是我的母语。这是我的意思的通用代码(如果我不清楚,请告诉我,我稍后会尝试更好地解释):

代码的通用数组

// A generic array adquired from a database
$myArray = [
    [0] => [
        ['id'] => 15
        ['anotherTableID'] => 4447
        ['description'] => 'GenericDescription'
        ['created'] => 2000-01-01 12:00:00
        ['expire'] => 2005-01-31 12:00:00
    ],
    [1] => [
        ['id'] => 35
        ['anotherTableID'] => 327
        ['description'] => 'AnotherGenericDescription'
        ['created'] => 2000-01-01 12:00:00
        ['expire'] => 2000-01-31 12:00:00
    ],
];

代码

echo "<div class='mainWrapper'>";
foreach ( $myArray as $cardArray ) {
    echo "<div class='cardWrapper", $myHTMLClass", '>"; //  <-- Here I need to echo the class
    foreach ($cardArray as $cardKey => $cardData) {
        switch ( $cardKey ) {
            case 'expire':
                if ( calculationOfExpire() == "3 Days Left" ) {
                    $myHTMLClass = " nearExpire";
                }
                echo $cardData;
            break;
            default:
                echo $cardData;
            break;
        }
    }
    echo "</div>";
}
echo "</div>";

这样做的重点是并排显示所有“CardArrays”,但每个都有自己独特的“可能过期”类。

【问题讨论】:

    标签: php html css arrays loops


    【解决方案1】:

    我会这样做:

    ...
    foreach ( $myArray as $index => $cardArray ) {
        $myHTMLClass = '';
        if (calculationOfExpire($cardArray[$index]['expire']) == "3 Days Left") {
            $myHTMLClass = 'nearExpire';
        }
        echo "<div class='cardWrapper" .  $myHTMLClass . "'>"; //  <-- Here I need to echo the class
    ...
    

    或者对于 1-liner:

    ...
    foreach ( $myArray as $index => $cardArray ) {
        echo "<div class='cardWrapper" . ((calculationOfExpire($cardArray[$index]['expire']) == "3 Days Left") ? ' nearExpire' :'' ) ."'>"; //  <-- Here I need to echo the class
    ....
    

    这只是使用当前卡片的索引来获取expire索引,您可以在上面进行计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多