【发布时间】:2019-02-25 11:02:27
【问题描述】:
我的数据库中有 3 个来自表单的数组
数组结果表单数据库
- 员工姓名 דרור שליט,לנה שליט
- 开始日期2019-02-01,2019-02-14
- 结束日期2019-02-13,2019-02-27
我想检查当前日期是否在两个数组的范围内,如果匹配,则显示人员数组中的工作人员姓名 例如,如果我只取每个数组的第一个值,结果将是
- 员工姓名 לנה שליט
- 开始日期 2019-02-01
- 结束日期 2019-02-13
这是我尝试过的,但这并没有给我正确的结果:
$neword = "SELECT `order_id` , `item`,`staff_name`, `staff_start_d`,`staff_end_d`,`item_sn`,`status`, DATE_FORMAT(`stamp` , '%d-%m-%Y' ) as `stamp` FROM rent ";
$userord = mysqli_query($link, $neword);
foreach ($userord as $myitem);
<?php foreach ($userord as $myitem) : ?>
<?php
$s_dates = array($myitem['staff_start_d']);
$e_dates = array($myitem['staff_end_d']);
$names = array($myitem['staff_name']);
$start = date("Y-m-d");
foreach($s_dates AS $date_s) {
$timestamp = strtotime($date_s);
if($timestamp == $start ) {
echo "1";
}else{
echo "no1";
}
}
foreach($e_dates AS $date_e) {
$timestamp = strtotime($date_e);
if($timestamp == $start ) {
echo "2";
}else{
echo 'no2';
}
}
?>
【问题讨论】:
-
如果你想检查一个日期是否在给定的范围中,那你为什么要比较相等呢?这会让你只匹配恰好是间隔的确切开始或结束日期的日期,但如果它在两者之间的任何地方,则不会。并且要检查日期是否在任何这些间隔中,您需要根据间隔的开始 和 结束日期检查它 - 现在,您首先检查所有开始日期,并且然后针对之后的所有结束日期 - 也没有多大意义。
-
你真的应该从一个更好的数据结构开始。这应该是 一个 数组(然后您可以循环),其中包含间隔(开始 和 结束日期)作为其元素。
-
所以您建议将所有数据放在同一列中?比如员工姓名、开始日期、结束日期?
-
我在这里说的是你的数组,而不是你的数据库结构。 (不一定需要 1:1 匹配。)
-
你能给我一个更好的数据结构的例子吗?