我在互联网上搜索过,有很多方法可以通过PHP将MySQL记录存储到Javascript数组中,例如this one。但是,我无法在Javascript中存储日期记录。
让我们说,
我的MySQL日期记录行名为holiday_date:2017-06-25,2017-06-26,2017-05-27。
我将如何通过
将其转换为json后存储在Javascript中<?php
$sql = "SELECT public_holiday.holiday_date
FROM public_holiday";
$result = mysqli_query($conn, $sql);
$result_array = Array();
while($row = mysqli_fetch_assoc($result))
{
$result_array[] = $row;
}
$json_array = json_encode($result_array);
echo $json_array;
?>
我试图将它们存储到像
这样的javascript日期数组中var holidays = [<?php //sample array for example
$loop_one = true;
foreach ($result_array as $date)
{
if ($loop_one)
{
echo "'new Date(\'$date\')'";
$loop_one=false;
}
else
{
echo ", 'new Date(\'$date\')'";
}
}
?>];
但所有这些都无效。
我需要你的帮助,非常感谢。
答案 0 :(得分:1)
因此,在您的示例中,$result_array
变量将是一个PHP数组,如:
$result_array = ['2017-06-25', '2017-06-26', '2017-06-27'];
在将其传递给Javascript之前,您并不需要将其转换为JSON。相反,您可以将这些字符串值直接打印到Javascript中以实例化日期对象,即
<?php
$sql = "SELECT holiday_date FROM public_holiday";
$result = mysqli_query($conn, $sql);
$result_array = Array();
while($row = mysqli_fetch_assoc($result))
{
$result_array[] = $row['holiday_date']; # Return the actual date value and not an array
}
?>
Javascript Part:
var holidays = [<?php
$firstLoop = true;
foreach ($result_array as $date_result) {
# Here you could format your $date_result variable as a specific datetime format if needed to make it compatible with Javascripts Date class.
if ($firstLoop) {
$firstLoop = false;
echo "new Date('$date_result')";
} else {
echo ", new Date('$date_result')";
}
}
?>];
在这个例子中,我正在构建一个new Date($phpDateTime)
个对象的javascript数组。
答案 1 :(得分:1)
要获取javaScript日期对象数组,只需更改脚本代码,无需更改PHP代码 您可以使用 JSON.parse 和 forEach 循环。
试试这个
<script>
var holidays = '<?php echo $json_array;?>';
holidays=JSON.parse(holidays);
var holidayArray=[];
holidays.forEach(function (key) {
holidayArray.push(new Date(key));
});
console.log(holidays);
console.log(holidayArray);
</script>
它将产生一个输出
我会帮助你。
答案 2 :(得分:0)
您的while loop
应该是这样的,并将date
推送到新阵列
<?php
$result_array = Array();
while($row = mysqli_fetch_assoc($result))
{
$result_array[] = $row['public_holiday.holiday_dat'];
}
//$result_array contains date like this $result_array = ['2017-06-26', '2017-06-27'];
?>
Javascript示例 e
<script>
var holidays = [<?php $result_array = ['2017-06-26', '2017-06-27']; //sample array for example
$loop_one = true;
foreach ($result_array as $date) {
if ($loop_one) {
echo "'new Date(\'$date\')'";
$loop_one=false;
} else {
echo ", 'new Date(\'$date\')'";
}
}
?>];
console.log(holidays);
</script>
更新1:最后您的代码应该是这样的
<?php
$sql = "SELECT public_holiday.holiday_date FROM public_holiday";
$result = mysqli_query($conn, $sql);
$result_array = Array();
while($row = mysqli_fetch_assoc($result))
{
$result_array[] = $row['public_holiday.holiday_dat'];
}
?>
<script>
var holidays = [<?php
$loop_one = true;
foreach ($result_array as $date) {
if ($loop_one) {
echo "'new Date(\'$date\')'";
$loop_one=false;
} else {
echo ", 'new Date(\'$date\')'";
}
}
?>];
console.log(holidays);
</script>