首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组与数据库进行比较

问将数组与数据库进行比较
EN

Stack Overflow用户
提问于 2014-03-05 23:44:37
回答 2查看 46关注 0票数 0

我将客户花费的时间存储在MySql数据库中。现在我想在网络上显示所有小时(和半小时),按9,9,30,10,10,30的顺序排列...并显示哪几个小时是空闲的。这里的代码只有在数据库中有一个小时的情况下才能工作。如果我在网络上的数据库中有两个小时,它会重复所有的小时两次,如果我在数据库中有3个小时,它会重复3次…例如,我在数据库中有9:00:00和10:00:00,第一次给出了红色的9,第二次只给出了10的红色: 09:00:00","09:30:00","10:00:00","09:30:00","10:00:00","10:30:00“,"10:30:00”

我不明白出了什么问题?我怎么能把所有的都整理好,而且只有一次呢?

代码语言:javascript
复制
$result = mysqli_query($con, 'SELECT * FROM consulta
                  WHERE professional=1
                  AND client=0');
while ($row = mysqli_fetch_array($result)) {

// 1- put the hours in a array:
$hours = array("09:00:00","09:30:00","10:00:00","10:30:00"); 

// 2- give each element of the array the var $hour
foreach ($hours as $hour) 
{  
    // 3- check each element of the array with each element of de database:
    if ($row['hora'] == $hour) {
        // hour was found in the database
        echo '<p style="color:blue;">'. $hour .'</p>';
    } else { 
        // hour was not found
        echo '<p style="color:red;">'. $hour .'</p>';
    }
}// end foreach

} // end while

在这个例子中,如果我使用echo $row['hora'] . '<br>';,它会给我:

09:00:00

10:00:00

EN

回答 2

Stack Overflow用户

发布于 2014-03-06 00:07:20

你的代码看起来不错。如果您愿意,可以尝试另一种解决方案:

$result = mysqli_query($con,'SELECT * FROM consulta professional=1 AND cliente=0');

代码语言:javascript
复制
// var_dump($result);
$hours = array("09:00:00","09:30:00","10:00:00","10:30:00");
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
if (in_array($row['hora'], $hours)) 
    {
        echo '<p style="color:blue;">'.$row['hora'] .'</p>';
    }
    else{
        echo '<p style="color:red;">'. $row['hora'] .'</p>';
    }
}

第二个版本:

代码语言:javascript
复制
//imprime todos los elementos presentes en array $hours    
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
            $rows[] = $row['hora'];
    }
    foreach ($hours as $hour) {
            if (in_array($hour, $rows))
            {
                echo '<p style="color:blue;">'.$hour .'</p>';
            }
            else{
                echo '<p style="color:red;">'. $hour .'</p>';

            }
    }
票数 0
EN

Stack Overflow用户

发布于 2014-03-06 00:20:14

当然,您可以将“time”字段转换为char,然后删除行中所有的“:”,然后再次检查匹配项。

根据我的经验,由于我的服务器位置(巴西),我在比较'date‘字段时遇到了问题,正如我所看到的,你也来自这里。

希望能有所帮助。

编辑:

另外,从while循环中删除$hours数组,并删除其中的“:”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22202364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档