My If语句仅在XML数据的最后一个数据集中满足条件时才有效。如果在最后一个条目之前满足条件,则无法识别。
这是XML数据
<PaymentsByMonthYear xmlns="server" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:schemaLocation="http://server.fseconomy.net/static/datafeed_payments.xsd" total="4">
<Payment>
<Id>51180698</Id>
<Date>2015/02/02 15:23:27</Date>
<To>Solo</To>
<From>Jon</From>
<Amount>1000.00</Amount>
</Payment>
<Payment>
<Id>51182828</Id>
<Date>2015/02/02 16:57:44</Date>
<To>Solo</To>
<From>lj440</From>
<Amount>100.00</Amount>
</Payment>
<Payment>
<Id>51192472</Id>
<Date>2015/02/02 21:28:25</Date>
<To>SoloBanner</To>
<From>lj440</From>
<Amount>5000.00</Amount>
<Reason>Group payment</Reason>
</Payment>
<Payment>
<Id>51234023</Id>
<Date>2015/02/04 06:00:55</Date>
<To>Bob</To>
<From>SoloBanner</From>
<Amount>5100.00</Amount>
</PaymentsByMonthYear>
以下是我所拥有的代码,只要最后一次付款符合,否则它会起作用。否则返回“否”
<?php
//Define Username
$user = "lj440";
//Connect to Server
$link1 = "data.xml";
$xml1 = simplexml_load_file($link1) or die("Error: Cannot create object");
//Gather Fields
foreach($xml1->children() as $info1)
{
$from = $info1->From;
$date = $info1->Date;
$amount = $info1->Amount;
}
//Create If Statement
if (($user == $from) AND (strtotime($date) > strtotime("1 month ago")) AND ($amount >= "5000.00"))
{
echo "yes";
}
else
{
echo "no";
}
?>
答案 0 :(得分:1)
foreach($xml1->children() as $info1)
{
$from = $info1->From;
$date = $info1->Date;
$amount = $info1->Amount;
}
你在那里看到任何if
声明吗?不。该循环只运行并运行,这些变量获取最后一个元素的值。由于你的if语句来自 这个循环之后,它只能看到最后一个元素并完成它的作用。
解决方案?将您的if
移到 循环中。