重用代码/为php中的函数分配不同的值

时间:2013-12-28 15:34:41

标签: php html arrays

我正试图找到一种方法。我有这个冗长复杂的代码(下面只是一个小小的片段,例如用途),我想在同一个文件中重复使用30次(放入上下文,它是一个产品页面文件)

<a href="<?php echo $products['product_x']['url'];?>"><?php echo $products['product_x']['name'];?></a>

$products['product_x']['url']是指多维数组,它位于单独的文件中并加载到站点的所有页面中。我想知道是否以这样的方式操纵product_x,允许我将上面的代码放在一个单独的文件中,将其包含在主产品页面上,然后将product_x更改30次以加载所有产品。很明显,每个产品都有自己的ID。

$products['product_x'] 
$products <-- name of the main array
$products['product_x'] <-- each product has it's own array
$products['product_x']['url'] <-- example of information stored in the array

每个产品在此页面上的编码超过100行,因为有各种参数需要考虑。是否可以将通用代码放入文件中并每次更改值时引用它30次?

我有30个产品,我想在单个产品页面上显示。它们各自由其ID控制(例如product_1product_2等。我希望每次都重复使用代码并更改这些ID。

3 个答案:

答案 0 :(得分:0)

是的。我会将所有通用代码实际放在一个函数中,并调用函数来对产品做任何想做的事情:

function process_product($product)
  {
  // do whatever
  return $edited_product
  }

// call it:
$processed = process_product($products['product_x'] );

答案 1 :(得分:0)

如果没有看到更多的代码,我将不得不做一些假设,但它们可能会让你接近。

在我看来,您不应该为产品的每次迭代更改产品。当然,产品都具有相似的属性,可以在同一个数据库表中找到。如果没有,也许这是需要考虑的事情。如果是这样,您的解决方案的伪代码将类似于:

<?php

$products = $db->fetchAllProducts();

foreach ($products as $product): 
?>
    <a href="<?php echo $product['url'];?>"><?php echo $product['name'];?></a>
<?php endforeach; ?>

您可以创建一个定义产品和类的迭代器的类。好处是你可以在迭代时使用标准接口。

答案 2 :(得分:0)

是的,您可以创建一个单独的PHP文件,其功能类似于以下内容,然后在传递产品ID /名称时包含该文件任意次:

// lets say, this file is info.php
function information_for_product_named($name) {
    $html  = "";
    $html .= "<a href='{$products['product_x']['url']}'>{$products['product_x']['name']}</a>";
    // .. and so on...
    echo $html;
}

现在,您可以在产品页面中执行以下操作:

require_once('info.php');
information_for_product_named('product_x');

很好,很微妙:)