php - 当名称在 PHP 中相似时检查值是否为真

标签 php arrays

我在名为“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"])。对于像您这样的情况,变量是字符串中的最后一个东西,括号不是必需的,但如果您愿意,添加它们也无妨。

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

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

关于php - 当名称在 PHP 中相似时检查值是否为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155637/

相关文章:

php - Preg_match 仅按顺序工作

php - Composer .lock : how does it work?

java - 如何按列专业将一维数组转换为二维数组

javascript - 按字符串排序数组

python - 将二维列表更改为标准矩阵形式

php - 如何组合两个函数并返回一个数组?

php - 为什么要在注释中声明 PHP 变量类型?

PHP 比较登录详细信息

ios - 检查可选数组是否为空

javascript - 如何将此 JSON 从 PHP 转换为 Javascript 数组