2014-02-19 45 views
0

以下是互联网用户使用关键字购买产品的一些简单和基本代码。这里是检索用户发送的关键字值的变量,然后用它来解析下面的XML文档。PHP - 多个条件不起作用的“if语句”

$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> 
+0

您可能需要在'if'语句中使用它之前投的节点为一个字符串。 –

+0

你有一个括号缺失,例如:&& $ Product-> price == $ Price)试试:&&($ Product-> price == $ Price) – TonyWilk

回答

0

你应该检查三个条件。在每种条件下你检查两个替代posibilities:

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

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

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