在PHP中名称相似时检查值是否为true

在PHP中名称相似时检查值是否为true,php,arrays,Php,Arrays,我在一个名为“hasMonday”、“Has周二”、“Has周三”的表中有一些列。。。使用布尔值了解某个产品是否属于某一天(可能出现在多个日期) 现在,我正在制作一个天数列表,并显示产品的数据(如果可用)(true)。类似于此: 星期一(hasMonday=true) 产品、价格等的数据 星期二(hasdesday=false) 今天没有产品 -- 我用一周中的几天做了一个数组,现在我想知道这一天有一个产品。以下是我目前的代码: $days= array("Monday", "Tuesday"

我在一个名为“hasMonday”、“Has周二”、“Has周三”的表中有一些列。。。使用布尔值了解某个产品是否属于某一天(可能出现在多个日期)

现在,我正在制作一个天数列表,并显示产品的数据(如果可用)(true)。类似于此:

星期一(hasMonday=true)

产品、价格等的数据

星期二(hasdesday=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
          }...
$days=数组(“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”);
foreach($天作为$天){
回声';
echo“$day产品”;
如果($Product['hasMonday']=true){
//显示信息
}否则{
//“无需显示信息”消息
}...
正如您所看到的,上面的代码每天都会重复所有产品,因此我希望您能帮助我使用尽可能少的步骤来检查这一点。例如:

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
}
foreach($days作为$day){
回声';
echo“$day产品”;
如果($Product['has.$day'])){
//显示信息
}否则{
//“无需显示信息”消息
}
不确定我写的东西是否可行,但我相信多了解一点我想得到的东西会有帮助


提前感谢您的回答

我想您正在寻找:

if ($Product["has$day"]) {
您建议的(
如果($Product['has.$day']){
)方法是正确的,但是变量不会在单引号内解析,这样的话就不需要连接运算符(

正如其他人所评论的,在变量后面的键中有任何附加字符串的情况下,这种方法将不起作用,例如
$Product[“$dayipresent”]
将不起作用,因为变量的结尾是不明确的。对于此类情况,必须将变量设置为,才能正确解释它(例如
$Product[“{$day}IsPresent“]
)。对于像您这样的情况,变量是字符串中的最后一项,括号是不必要的,但是如果您愿意,添加括号也无妨

如果除了具有
true
false
值之外,
$Product['hasMonday']
等可能没有实际设置,您可以使用
!empty
而不是简单地评估数组键的真实性

if (!empty($Product["has{$day}"])) {

这真的可能吗?如何调用此函数?我建议在字符串
$Product[“has{$day}”中使用大括号括起变量,以提高可读性,减少bug
这两种方法都有效,但是在
$day
之后添加任何内容都会破坏没有大括号的代码。@HiGonz我的意思是替换您建议的代码中的行。我对答案添加了更多的解释;很抱歉,最初有点简洁。或者
if(isset($Product[“has{$day}]))
@Ghost我不知道,我认为它看起来应该总是设置为布尔值,如果为false,则不应显示。