我需要有关循环数组,显示格式化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”,但每个都有自己独特的“可能过期”类。
答案 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
索引,您可以对其进行计算。