如何以有效的方式将多个变量绑定到变量

时间:2015-04-19 17:05:52

标签: php

我必须将多个变量绑定到另一个变量($ products_output) 现在我这样做:

$products_output  = $product1_output;
$products_output .= $product2_output;
$products_output .= $product3_output;
$products_output .= $product4_output;
$products_output .= $product5_output;
// and so on till 50...

有没有办法比这更有效率? 我稍后需要在邮件功能中使用变量 $ products_output ,此变量应包含所有变量 $ product1_output ,直到 $ product50_output

更新:有关此问题的更多信息: 我正在使用$ _POST读取值,形成如下形式:

$product1_output = '';
if(!empty($_POST['product1'])) {
$product1_output =    $product1.' '.$_POST['product1'].' pieces Price € '.number_format($_POST['product1']*$price[$product1], 2);
}
$product2_output = '';
if(!empty($_POST['product2'])) {
$product2_output = $product2.' '.$_POST['product2'].' pieces Price € '.number_format($_POST['product2']*$price[$product2], 2);
}
// and so on...

为了在邮件功能中使用所有这些变量,我想:将它们全部绑定到只有1个变量:

$products_output  = $product1_output;
$products_output .= $product2_output;
// and so on...

所以我的问题:让我们说有500种产品,每种都有不同的价格,我必须从表格中读取并乘以产品的价格,如何在不输入长代码列表的情况下以有效的方式做到这一点?

这是以下形式的一部分:

 <tr>
            <td><?php echo $product1 ?></td>
            <td>&euro; <?php echo number_format($prijs[$product1], 2); ?></td>
            <td><input type="text" name="product1" size="3" /></td>

        </tr>
        <tr>
            <td><?php echo $product2 ?></td>
            <td>&euro; <?php echo number_format($prijs[$product2], 2); ?></td>
            <td><input type="text" name="product2" size="3" /></td>
        </tr>

我将这个关联数组与产品列表一起使用。

$product1 = 'Broodje Ham';
$product2 = 'Broodje Kaas';
$product3 = 'Broodje Gezond';
$product4 = 'Broodje Tonijn';
$product5 = 'Broodje Zalm';
// and so on...

//prices of products
$price = array(
                $product1 => 3.5, // prijs 3.50 
                $product2 => 3.5,
                $product3 => 3.5,
                $product4 => 4.5,
                $product5 => 4.5,
                // and so on...
 );

6 个答案:

答案 0 :(得分:1)

您可以按如下方式编写代码。

$products_output = "";

for($i=1;$i<=50;$i++){

$prodVar = "product".$i."_output";

$products_output .= $$prodVar;

}
echo $products_output;

答案 1 :(得分:1)

使用${}是一种创建动态变量的方法:

for($i=1;$i<=50;$i++){
$products_output .= ${"product".$i."_output"};
}

DEMO

答案 2 :(得分:0)

您应该尝试从数组中获取变量,因此$products_output应该是包含所有值的数组。

一,您可以在表单输入名称中使用括号从数组开始:

<input type="text" name="product[1]" size="3" />

所以现在你将在$_POST['product']而不是〜50个不同的变量上有一个数组。

然后,您可以遍历此数组以使用相同的键(1 ... 50)创建输出数组。

foreach ($_POST['product'] as $key => $product) {
  $products_output[$key] = "...";
}

现在当你需要使用输出数组时,你可以循环使用它。

foreach ($products_output as $product) {
  echo $product."\n";
}

答案 3 :(得分:0)

类似的东西:

$products_output = '';
for($i = 1; $i<=50;$i++) {
    $prodx_output = 'product'.$i.'_output';
    $products_output .= $$prodx_output;
 }

答案 4 :(得分:0)

您正在寻找array

示例:

$products_output[1] = $product1_output;
$products_output[2] = $product2_output;

...

如果要从数组中连接所有值,可以使用implode

如果要将每个变量解析为数组,可以使用循环for

答案 5 :(得分:0)

你可以做这样的事情

$var_prefix = 'products';
$var_suffix = '_output';
$var_name = '';
for($i=1; $i<=50; $i++)
{
    $var_name = $var_prefix.$i.$var_suffix;
    $products_output .= $$var_name;
}

它使用variables variable,但您确实应该在代码中避免这种情况。变量$products1_output$products2_output, ..., $products50_output的存在表明代码中存在一些设计问题。您可能希望使用数组而不是将一堆具有相似名称的变量组合在一起。

Demo