【问题标题】:PHP Loop Dynamic VariablePHP 循环动态变量
【发布时间】:2019-09-25 03:16:03
【问题描述】:

我正在尝试创建一个动态变量。我有一个循环,我希望它遍历记录并为每条记录创建一个变量。我的代码:

$ct = 1;
foreach ($record as $rec){
  $var.$ct = $rec['Name'];
  $ct = $ct + 1;
}

echo $var1;

当我尝试使用上面的代码时,它给了我一个错误,说$var1 变量不存在/未定义?是否可以在 PHP 中创建像上面的示例一样的动态变量。如果是这样,我做错了什么?

【问题讨论】:

  • 什么是$var??
  • 我设置的变量。变量的常数部分。它可以是任何东西 $name.$ct
  • 改用数组。
  • 你为什么不使用数组??

标签: php loops variables


【解决方案1】:

您正在寻找variable variables

将变量名创建为字符串,然后赋值:

$ct = 1;
foreach( $record as $rec )
{
  $name = 'var'.$ct;
  $$name = $rec['Name'];
  $ct++;
}

echo $var1;

不过,创建一个数组会更好:

$names = [ ];

foreach( $record as $rec )
{
  $names[] = $rec['Name'];
}

echo $names[0];

【讨论】:

  • 明确一点:数组不仅是解决问题的更好解决方案,而且使用可变变量几乎总是最差的解决方案。跨度>
【解决方案2】:

{} 可以使用不同的语法

$ct = 1;

foreach ($record as $rec){
    ${'var' . $ct++} = $rec['Name'];
}

echo $var1;

虽然使用数组不是更好吗?

Working fiddle

【讨论】:

【解决方案3】:

你可以用双 $。

    $var = "variable";
    $$var = "test";

    echo $variable;
    //echoes "test"

在你的例子中:

$ct = 1;
foreach ($record as $rec){
$varname = "var" . $ct;
  $$varname = $rec['Name'];
  $ct = $ct + 1;
}

echo $var1;

【讨论】:

    【解决方案4】:

    请试试这个,让我知道它是否适合你。 我对动态变量使用前缀。

    $ct = 1;
    $prefix = 'var';
    foreach ($record as $key=>$rec){
      $temp = $ct;
      $ct = $prefix.$ct;
      $$ct = $rec;
      $ct = $temp + 1;
    }
    
    echo $var1;
    

    【讨论】:

      【解决方案5】:

      您可以使用数组轻松做到这一点。但是,如果您真的希望它单独处于动态变量中,那么在这种情况下,我也建议您以数组方式获得帮助。这样,您可以跟踪变量。

      在下面提到的方式中,你不需要像 $ct 这样的额外变量。只需一个数组 $var 并在循环后对其应用提取方法即可。

      $var = [];
      
      foreach( $record as $k => $rec )
      {
       $var['var'.$k] = $rec['Name'];
      
      }
      
      extract($var);
      
      echo $var0; //or $var_1 or $var_2
      

      【讨论】:

        猜你喜欢
        • 2016-07-10
        • 2014-11-26
        • 2014-05-20
        • 1970-01-01
        • 2017-12-11
        • 1970-01-01
        • 2011-09-15
        • 2019-02-05
        • 2017-07-27
        相关资源
        最近更新 更多