我在名为“hasMonday”、“hasTuesday”、“hasWednesday”等的表中有一些列...具有 bool 值,以了解某个产品是否属于某一天(可以出现在不止一天)
现在我正在制作天数列表并显示产品数据(如果可用)(真)。类似这样的东西:
星期一 (hasMonday=true)
产品、价格等数据
星期二 (hasTuesday=false)
今天没有商品
--
我用星期几做了一个数组,现在我想知道它今天有产品。到目前为止,这是我的代码:
$days= array("Monday", "Tuesday", "Wednesday", "Thursday","Friday","Saturday","Sunday");
foreach ($days as $day) {
echo '<div id="$day" class="dayDiv">';
echo "<h4>$day Products</h4>";
if ($Product['hasMonday'] = true) {
// Show the info
}else{
// "No info to show" message
}...
如您所见,上面的代码每天都会重复所有产品,所以如果您能帮助我使用尽可能少的步骤来检查它,我将不胜感激。像这样的东西:
foreach ($days as $day) {
echo '<div id="$day" class="dayDiv">';
echo "<h4>$day Products</h4>";
if($Product['has.$day']){
//show the info
}else{
// "No info to show" message
}
不确定我写的东西是否可行,但我相信它有助于更多地理解我想要得到的东西。
预先感谢您的回答
最佳答案
我认为您正在寻找:
if ($Product["has$day"]) {
您建议的方式 (if($Product['has.$day']){
) 是在正确的轨道上,但变量没有在单引号内解析,连接运算符(.
) 在 interpolating a variable into a string 时不需要就像那样。
正如其他人评论的那样,这种方法在变量之后的键中有任何附加字符串的情况下不起作用,例如 $Product["$dayIsPresent"]
将不起作用,因为变量的末尾不明确。对于这些情况,变量必须是 enclosed in brackets以便正确解释它(例如 $Product["{$day}IsPresent"]
)。对于像您这样的情况,变量是字符串中的最后一个东西,括号不是必需的,但如果您愿意,添加它们也无妨。
如果有可能除了具有 true
或 false
值之外,$Product['hasMonday']
等可能实际上并未设置,您可以使用!empty
而不是简单地评估该数组键的真实性。
if (!empty($Product["has{$day}"])) {
关于php - 当名称在 PHP 中相似时检查值是否为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155637/