我正在創建一個動態編碼的if語句,它是基於從網站訪問者提交的值構建的。 if語句代碼被內置到$ if_statement變量,就像這樣:PHP - 一個動態編碼的if語句來解析XML
$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文件,所以我想if語句是動態編碼PRIOR到foreach循環執行。由於在if語句中測試的條件可能有1到9個之間(取決於有多少GET方法從用戶輸入中產生空變量),因此在系統上測試空變量只需要一次(在foreach之前循環執行)比在foreach循環的EVERY循環期間測試空變量要多。當只有1或2個條件需要測試時,測試9個條件是浪費。
但顯然是因爲$ if_statement是在foreach循環執行之前構建的,所以導致動態if語句代碼的'Product-> variable'部分不被評估。所以什麼都沒有顯示在下面的foreach循環:
$XMLproducts = simplexml_load_file("products.xml");
foreach($XMLproducts->product as $Product) {
if ($if_statement) { // the problem lies here
echo $Product->name;
}}
是否有搭建的方式動態創建的如果解析XML之前foreach循環執行的語句?
這就是我的想法。謝謝!即使被解析的XML文件非常大(5-7mb),檢查9個變量是否爲空(在每個循環中)對於內存消耗,資源使用情況和代碼處理的簡便性都不會「不友好」。 –
不,在現階段根本不考慮表現。生產應用程序比這更復雜許多倍,它們運行得很好。所有邪惡的禍根都是成熟的優化,當它慢時就開始優化;) – Feras