如果语句仅使用xml PHP的最后一个数据集

时间:2015-02-04 17:05:48

标签: php xml if-statement

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";
}
?> 

1 个答案:

答案 0 :(得分:1)

  foreach($xml1->children() as $info1)
   {
    $from = $info1->From;
    $date = $info1->Date;
    $amount = $info1->Amount;
   }

你在那里看到任何if声明吗?不。该循环只运行并运行,这些变量获取最后一个元素的值。由于你的if语句来自 这个循环之后,它只能看到最后一个元素并完成它的作用。

解决方案?将您的if 移到 循环中。