【问题标题】:Create arrays with cycles创建带循环的数组
【发布时间】:2014-04-28 18:21:51
【问题描述】:

我有以下代码:

for ($i = 1; $i <= $j; $i++) 
{
    $goods_{$i} = array(
        $_POST["'goods'.$i'_title'"],
        $_POST["'goods'.$i.'_package'"],
        $_POST["'goods'.$i.'_nmr'"]
    );
}

我希望它可以在循环的第一步中做到这一点:

$i =1;
$goods_1 = array(
    $_POST['goods1_title'], 
    $_POST['goods1_package'], 
    $_POST['goods1_nmr']
);

在其他步骤中以此类推。

【问题讨论】:

  • 只需去掉双引号字符串中的单引号和点:$_POST["goods{$i}_title"]
  • @jeroen 这没有帮助。某处是语法错误,因为仍然出现白屏。
  • 然后enable error reporting,找出语法错误发生在哪里。
  • 你到底为什么要这样做?你正在使用数组,继续使用它们。

标签: php arrays variables cycle


【解决方案1】:

我遵循 AbraCadaver 的观点:

为什么你要这样做?您正在使用数组,请继续使用它们。

因此,我会简单地使用Array 编写代码:

$goods = array();
for ($i = 1; $i <= $j; $i++) 
{
    // Assign to an index in the already created array,
    // but DO NOT create a new variable.
    $goods[$i] = array(
        // Also make sure these are correct ..
        $_POST["goods{$i}_title"],
    );
}

如果您真的想要创建动态变量 - 糟糕! - 见variable variables

【讨论】:

  • @nicael 您的回答讨论了我顺便提及的辅助字符串构建。我认为主要问题是$goods_$i 语法/目标。
  • "因此,我将代码简单地写成:" - 你可以写得更简单... :) 只需将数组定义为$goods = []
  • @JakubPolák 旧的/熟悉的习惯很难改掉——这会奏效,是的。
【解决方案2】:

应该是

    $_POST["goods{$i}_title"],
    $_POST["goods{$i}_package"],
    $_POST["goods{$i}_nmr"]

【讨论】:

  • @DanyCaissy 你为什么说谎?我不能拒绝投票。它需要 125 声望。
  • 问题是创建变量的变量不能以这种方式工作$goods_{$i}。这可能就是您的答案被否决的原因。
  • 尝试以这种方式构建变量,然后使用var_dump($goods_1),您将得到NULL
  • 请对您的代码添加一些解释,并解释 OP 做错了什么
【解决方案3】:

可以这样做:

for ($i = 1; $i <= $j; $i++) 
{
    ${"goods_$i"} = array(
        $_POST["'goods'.$i'_title'"],
        $_POST["'goods'.$i.'_package'"],
        $_POST["'goods'.$i.'_nmr'"]
    );
}

您可以在related PHP documentation 中阅读有关此主题的更多信息。

"'goods'.$i'_title'" 的结果将是 'goods'.1'_title',如果您希望它是 goods1_title,请改用以下代码:

for ($i = 1; $i <= $j; $i++) 
{
    ${"goods_$i"} = array(
        $_POST["goods{$i}_title"],
        $_POST["goods{$i}_package"],
        $_POST["goods{$i}_nmr"]
    );
}

另一个错误可能是在 1 种情况下您使用 .$i.,而在其他 2 种情况下您使用 .$i 而没有最后一个 .

【讨论】:

  • @user2864740 可能不是,但主要问题在于变量的定义变量。
  • 如果你打算使用变量变量(ick!),考虑${'goods_' . $i} = array(..)的形式。
  • @user2864740 我同意,这是更好的方法。
  • 啊,是的。显示我使用可变变量的程度:)
猜你喜欢
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多