首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -一种动态编码的if语句,用于解析XML

问PHP -一种动态编码的if语句,用于解析XML
EN

Stack Overflow用户
提问于 2014-04-08 23:26:42
回答 1查看 154关注 0票数 0

我正在创建一个动态编码的if语句,它是基于站点访问者提交的值构建的。if语句代码内置到$if_statement变量中,如下所示:

代码语言:javascript
复制
$keyword = trim($_GET["Keyword"]);
if (!empty($keyword)) {
$if_statement = ($keyword == $Product->keyword);
}

$shopByStore = $_GET["store"];
if (!empty($shopByStore)) {
$if_statement = ($if_statement && $shopByStore == $Product->store);
}

// plus 7 more GET methods retrieving potential user input for the $if_statement variable.

这个if语句代码将用于在foreach循环中解析一个非常大的XML文件,因此我希望在执行foreach循环之前对if语句进行动态编码。由于if语句中可以测试1到9个条件(取决于有多少GET方法从用户输入中生成空变量),因此系统只测试一次空变量(在foreach循环执行之前)似乎比在foreach循环的每个循环中测试空变量要困难得多。当只需要测试1或2个条件时,对9种条件进行测试是一种浪费。

但是显然是因为$if_statement是在foreach循环执行之前构建的,这导致动态if语句代码的“Product”部分不被计算。因此,在下面的foreach循环中没有显示任何内容:

代码语言:javascript
复制
$XMLproducts = simplexml_load_file("products.xml");
foreach($XMLproducts->product as $Product) {

if ($if_statement) { // the problem lies here
echo $Product->name;
}}

是否有一种方法来构建动态创建的if语句,该语句在foreach循环执行之前解析XML?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 01:02:23

不,如果您依赖于$Product变量,则在访问它之前不能基于它创建语句。这应该很简单。

代码语言:javascript
复制
if($Product->something) {}  //this is meaningless and will throw and error
//if you define $Product->something here

你只需要在循环中做你的if_statement并且开销是可以忽略的.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22950107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档