XML作为if else的替代方案

时间:2013-12-06 04:04:54

标签: php xml if-statement

我的网站在数据库中有大量产品。我想为每个产品添加一个产品表,但数据库没有设置" slot"为了它。所以我想在模板中编写一个PHP代码来检查部件号,并使用它来加载产品表的正确URL作为链接。例如

<?php
if (strpos($product_sku,'KE15000/12') !== false) {
  $factsheetimage_urlZ='/images/FactsheetBTN.png';
  $factsheetweblink_url="images/factSheetKE15000/12.pdf";
} else if (strpos($product_sku,'KE2000/12') !== false) {
  $factsheetimage_urlZ='/images/FactsheetBTN.png';
  $factsheetweblink_url="images/factSheetKE20000/12.pdf";
} else {
  $factsheetimage_urlZ='/images/blank.png';
}
?>

<div>
  <a href="<?php echo $factsheetweblink_url;?>">
  <img src="<?php echo $factsheetimage_urlZ;?>"></a>
</div>

我现在正在使用if else语句(我对PHP很新)我想知道是否有办法检查$product_SKU对XML文档是否自动加载正确的链接,而不是做300 if else语句。 ($product_SKU是每页上加载的唯一产品代码)

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。

如果$factsheetweblink_url可以基于$product_sku以某种程序方式生成,那可能是我的第一选择。例如。 $factsheetweblink_url = "images/factSheet{$product_sku}.pdf";

其次,如果可能,将此列添加到数据库将是最佳选择。

否则,您提到的查找表当然是可能的,XML是一种选择。如果您手动编写,或者需要由非技术人员编写,则需要考虑选择格式。如果它只是你,我可能会使用更简单的格式(甚至是普通的PHP数组)。

这种类型的映射作为PHP数组的简单示例可能如下所示:

sku_url_map.php:

<?php
return [
  'KE15000/12' => 'images/factSheetKE15000/12.pdf',
  'KE20000/12' => 'images/factSheetKE20000/12.pdf',
];

product_page.php:

<?php
$sku_url_map = require 'sku_url_map.php';
// ...
if (isset($sku_url_map[$product_sku])) {
  $factsheetweblink_url = $sku_url_map[$product_sku];
}

当然,如果更简单的1:1映射,可以使用更复杂的结构。