使用“可变”包装类输出HTML

时间:2014-07-28 21:26:49

标签: php html css arrays loops

我需要有关循环数组,显示格式化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”,但每个都有自己独特的“可能过期”类。

1 个答案:

答案 0 :(得分: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索引,您可以对其进行计算。