PHP - “if语句”表示多组条件不起作用

时间:2014-02-19 12:43:07

标签: php xml if-statement

以下是一些简单的基本代码,供互联网用户使用关键字购买产品。以下是检索用户发送的关键字值的变量,然后用于解析下面的XML文档。

$Name  = $_GET["name_keywords"];
$Price = $_GET["price_keyword"];
$Store = $_GET["store_keywords"];

互联网用户不必提交搜索查询并向所有三个变量发送价值 - IE /他可以仅按价格搜索,或按名称和价格等搜索。因此,当用于解析下面的XML文档时,某些变量可能为NULL。所以我在foreach循环中的“if语句”必须考虑到这一点。

下面的if语句是问题,因为它不起作用。有关编写if语句的任何建议,以便它可以解析XML文档以匹配一个,两个或三个条件的条件,并考虑到某些变量可能为空?谢谢!

<?php

    $xmlDoc = simplexml_load_file("products.xml");
    foreach($xmlDoc->product as $Product) 
    {
        if (($Name == $Product->name) && (!empty($Price) && $Product->price == $Price) && ($Store) && $Product->store == $Store)) 
        {
            echo "Name: " . $Product->name . ", ";
            echo "Price: " . $Product->price . ", ";
            echo "Price: " . $Product->store . ", ";
        }
    }

这是XML文件:

<products>
  <product type="Electronics">
    <name> Desktop</name>
    <price>499.99</price>
    <store>Best Buy</store>
  </product>

  <product type="Electronics">
    <name>Lap top</name>
    <price>599.99</price>
    <store>Best Buy</store>
  </product>

  <product type="Hardware">
    <name>Hand Saw</name>
    <price>99.99</price>
    <store>Lowes</store>
  </product>
</products>

1 个答案:

答案 0 :(得分:0)

你应该检查三个条件。在每种情况下,你都会检查两种不同的可能性:

  • 变量为空
  • 变量等于产品参数。

所以你的情况应该是这样的:

if (    (empty($Name) ||  $Product->name == $Name)
     && (empty($Price) || $Product->price == $Price)
     && (empty($Store) || $Product->store == $Store)
) {