我的编码有两个部分,第一部分将回显开始日期和结束日期之间的日期(我的可能日期)。第二部分回应了存储在MYSQL数据库中的日期(事件日期)。我现在遇到的问题是当我尝试回显可变日期和事件日期的变量时。它们在各个部分中回显完整列表,但在最后一部分中,它只回显列表中的两个变量的最后一个值。我试过让它们成为全局变量,但仍然有相同的结果。以下代码:
<?php
//Section one//
$date1 = '10/06/2014';
$date2 = '30/06/2014';
function returnDates($fromdate, $todate) {
$fromdate = \DateTime::createFromFormat('d/m/Y', $fromdate);
$todate = \DateTime::createFromFormat('d/m/Y', $todate);
return new \DatePeriod(
$fromdate,
new \DateInterval('P1D'),
$todate->modify('+1 day')
);
}
$datePeriod = returnDates($date1, $date2);
foreach($datePeriod as $date) {
$possible=($date->format('dmY'));
}
//section two - Event dates in the MYSQL database//
$con=mysqli_connect("localhost","apple","Orange1","cal");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM events");
while($row = mysqli_fetch_array($result)) {
$dateday = $row['Day'];
$datemonth = $row['Month'];
$dateyear = $row['Year'];
if($datemonth<"12"){
$newmonthdate=("0$datemonth");
}else{
$newmonthdate=("$datemonth");
}
$taken=("$dateday$newmonthdate$dateyear");
}
// Section three - Removing 'event dates list' from 'possible dates list' //
echo "test"."<br>";
echo "$possible"."<br>";
echo "$taken"."<br>";
?>
计划从可能的日期删除存储在MYSQL数据库中的事件日期以生成新列表,但是确保$ possible和$ taken在最后一节中表示正确的值,但它们不是。
我目前得到的是:
测试
30062014个
17082014
我应该得到:
测试
10062014
答案 0 :(得分:0)
你正在覆盖变量$ $和$循环(foreach,while)。
您可以使用数组:
$possible=array(); # before foreach loop!
...
$possible[]=($date->format('dmY'));
或者只是将其全部添加为字符串(取决于您的需要):
$possible=""; # before foreach loop!
...
$possible.= ($date->format('dmY'))."<br>";