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