因此,我试图创建一个页面,在特定的日子读取特定的XML文件。我对此有意见,我们将不胜感激。
这是我的XML文件的结构:
<?xml version="1.0" encoding="iso-8859-1"?>
<excercises>
<excercise>
<name>Test</name>
<sr></sr>
<weight>25kg</weight>
<comment>Testing</comment>
</excercise>
<excercise>
<name>Test II</name>
<sr></sr>
<weight>250kg</weight>
<comment>Testing more</comment>
</excercise>
</excercises>
这是我的PHP代码:
<?php $month = mktime("m"); ?>
<?php $weekday = mktime("weekday"); ?>
<?php
$doc = new DOMDocument();
if ($month == "01","03","05","07","09","11") && ($weekday == "Monday") {
$doc->loadXML( 'resourceMon.xml' ); }
if ($month == "01","03","05","07","09","11") && ($weekday == "Tuesday") {
$doc->load( 'resourceTue.xml' ); }
if ($month == "01","03","05","07","09","11") && ($weekday == "Thursday") {
$doc->load( 'resourceThu.xml' ); }
if ($month == "01","03","05","07","09","11") && ($weekday == "Friday") {
$doc->load( 'resourceFri.xml' ); }
if ($month == "02","04","06","08","10","12") && ($weekday == "Monday") {
$doc->load( 'resourceMon.xml' ); }
if ($month == "02","04","06","08","10","12") && ($weekday == "Tuesday") {
$doc->load( 'resourceTue.xml' ); }
if ($month == "02","04","06","08","10","12") && ($weekday == "Thursday") {
$doc->load( 'resourceThu.xml' ); }
if ($month == "02","04","06","08","10","12") && ($weekday == "Friday") {
$doc->load( 'resourceFri.xml' ); }
else { echo "This day is not a right day to workout!"; }
$xpath = new DOMXPath($dom);
$root=$doc->documentElement;
$excercises = $dom->getElementsByTagName( "excercise" );
foreach( $excercises as $excercise ) {
$names = $excercise->getElementsByTagName( "name" );
$name = $names->item(0)->nodeValue;
$sr = $excercise->getElementsByTagName( "sr" );
$sr = $sr->item(0)->nodeValue;
$weights= $excercise->getElementsByTagName( "weight" );
$weight= $weights->item(0)->nodeValue;
$comments = $excercise->getElementsByTagName( "comment" );
$comment = $comments->item(0)->nodeValue;
echo "<tr><td><b>$name</b></td><td>$sr</td><td>$weight</td><td><i>$comment</i></td></tr>";
}
?>
首先,阅读mktime
的文档。它根本不像你试图使用它那样工作。
其次,$foo == "01", "02", ...
是无稽之谈。如果需要进行比较,请使用in_array
。
第三,你把事情搞得太复杂了。做一些类似的事情:
$file = 'resource' . date('D') . '.xml';
$doc->loadXML($file);
或
switch (date('N')) {
case 1 :
$file = 'resourceMon.xml';
break;
case 2 :
...
default :
return false;
}
$doc->loadXML($file);
您可以编写这样的条件
if (($month == "01" || $month =="03" || $month =="05" || $month =="07" || $month =="09" || $month =="11")) && ($weekday == "Monday") {
$doc->loadXML( 'resourceMon.xml' ); }
您需要使用日期()
date('l') // returns Monday, Tuesday, Wednesday etc.
date('m') // returns month in two digits, 01, 02, 03 etc.
1)使用date()而不是mktime
2) 使用load()而不是loadXML
3) 制作一个数组,并使用in_array()在数组中查找特定月份
<?php $month = date("m");
$weekday = date("D");
$doc = new DOMDocument();
$monthHaystack = array("01","03","05","07","09","11");
if (in_array($month,$monthHaystack) && ($weekday == "Mon")) {
$doc->load( 'resourceMon.xml' ); }
else { echo "This day is not a right day to workout!"; }
?>
然后其余部分保持不变,也不需要xpath。