【问题标题】:Adding increamental variable number to a variable将增量变量编号添加到变量
【发布时间】:2012-04-26 03:24:32
【问题描述】:

我正在尝试创建一个使用增量/计数创建变量的循环:

$names = 4;

for($it=0;$it<$names;$it++){ 
           $NAME{$it}       = $_REQUEST['NAME'.$it.''];
           $SURNAME{$it}    = $_REQUEST['SURNAME'.$it.''];
           $AGE{$it}        = $_REQUEST['AGE'.$it.''];
 }

我的问题是,我没有得到 $NAME0、$NAME1 等,而是得到一个数组(所以 $NAME[0]、$NAME[1] 等等)。

如何使用循环获取 $NAME0、$NAME1、$NAME2、$SURNAME1、$SURNAME2 $SURNAME3、$AGE1、$AGE2、$AGE3 中的所有信息?

谢谢:)

【问题讨论】:

  • 为什么使用数组‽这是更明智的方法!
  • 你为什么不想要一个数组?你可以遍历数组,对它们进行切片,并做各种你不能用一堆具有相关名称的变量做的事情。
  • 无论如何,你应该用一个数组而不是一堆全局变量来做到这一点。
  • 很抱歉回答这个问题,而不是假设某人需要什么。绝对没有理由拒绝我的回答,但是,嘿,去吧!
  • @CassieCarter:我认为它不起作用:codepad.org/XUxxGxyL

标签: php loops for-loop


【解决方案1】:

您不想要具有相关名称的变量;使用数组要简单得多。在这种情况下,$NAME0$NAME[0] 相同,除了使用 $NAME[0] 可以做的事情比使用 $NAME0 可以做的事情更多。坚持阵列,学会使用;不要重新发明轮子。

【讨论】:

    【解决方案2】:

    一般来说,如果没有认真考虑,这对于超级全局变量(例如$_REQUEST)来说是危险的。

    但是,对于未充分利用的 PHP 函数 extract(),这是一个很好的用例。

    如果您要在这种情况下使用它,我强烈建议您使用 EXTR_PREFIX_ALL 标志设置附加参数。

    【讨论】:

    • 这很可能是 Elliot Bonneville 投了反对票,因为我们提供的解决方案与他的不同......引用我们“为 OP 提供他们想要的东西”。
    • @JT Smith:嘿,别生气。我没有否决其他任何一个问题,仅供参考。 :)
    【解决方案3】:

    我同意其他人关于使用数组的看法,这要好得多,但如果这不是您想要的,请尝试在变量中添加下划线...可能不是“完美”但不会创建数组:

    $names = 4;
    
    for($it=0;$it<$items;$it++){ 
           $NAME_{$it}       = $_REQUEST['NAME'.$it.''];
           $SURNAME_{$it}    = $_REQUEST['SURNAME'.$it.''];
           $AGE_{$it}        = $_REQUEST['AGE'.$it.''];
    }
    

    【讨论】:

    • 是的,它远非完美。事实上,这是给 OP 提供他们想要的东西而不是他们需要的东西的另一个坏例子。当他们开始编写更复杂的代码时,这种方法通常会给他们带来很多麻烦。
    • 艾略特,你刚才所说的叫做学习。 OP问了一个问题。这不是一个坏例子,它是一种选择。
    • @ElliotBonneville 我正在“为 OP 提供他们想要的东西”,因为 正是他们要求的。我想他们要求它是因为这就是他们想要的。这可能不是最好的解决方案,因为我同意将其用作数组,但是,我们会告诉他们最好的程序,同时仍然回答他们的问题以满足他们的特定需求。人们可以随意命名变量。
    • 确实如此。但是,您为什么要为某人创建人工学习曲线?告诉他们他们真正需要什么。我会很感激有人在我学习的时候为我做的。事实上,如果有人为我这样做,我仍然很感激。
    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多