将HTML代码与PHP结合使用

Cos*_*smo 1 html php

我有PHP和HTML的代码,但我似乎无法让PHP代码回显到HTML.

<?php

countdown(2011,6,7,7,31,0);

function countdown($year, $month, $day, $hour, $minute){
$the_countdown_date=mktime($hour, $minute, 0, $month, $day, $year, -1);
$today=time();
$difference=$the_countdown_date - $today;
$days=floor($difference/60/60/24);
$hours=floor(($difference - $days*60*60*24)/60/60);
$minutes=floor(($difference - $days*60*60*24 - $hours*60*60)/60);
}

?>
<!doctype html>
<html>
<head>

</head>
<body>

<h1><?php echo "$days days $hours hours $minutes minutes";?></h1>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?提前致谢.

卡勒姆

Jon*_*Jon 6

您正在$days函数内设置变量等,但期望在该函数之外访问它们.这是不可能的,因为变量没有正确的范围.

您可以做的最小变化是:

function countdown($year, $month, $day, $hour, $minute){
    global $days, $hours, $minutes; // ADD THIS
    $the_countdown_date=mktime($hour, $minute, 0, $month, $day, $year, -1);
    $today=time();
    $difference=$the_countdown_date - $today;
    $days=floor($difference/60/60/24);
    $hours=floor(($difference - $days*60*60*24)/60/60);
    $minutes=floor(($difference - $days*60*60*24 - $hours*60*60)/60);
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为它使您的变量具有全局范围.但是,这是错误的解决方案.

更好的解决方案是让你的函数返回你需要的值 - 因为有三个值但只返回一个,所以用数组做:

function countdown($year, $month, $day, $hour, $minute){
    $the_countdown_date=mktime($hour, $minute, 0, $month, $day, $year, -1);
    $today=time();
    $difference=$the_countdown_date - $today;
    $days=floor($difference/60/60/24);
    $hours=floor(($difference - $days*60*60*24)/60/60);
    $minutes=floor(($difference - $days*60*60*24 - $hours*60*60)/60);
    return array($days, $hours, $minutes);
}
Run Code Online (Sandbox Code Playgroud)

然后,调用函数并检索如下值:

list($days, $hours, $minutes) = countdown(2011,6,7,7,31,0);
Run Code Online (Sandbox Code Playgroud)

"返回数组中的多个值"主题有很多变化; 我在这里使用了最短(但可能不是最清楚,因为它使用list).

  • @JaredFarrish:完成:) (3认同)
  • @Jon - 请加粗"但是"的句子.:) (2认同)