PHP 循环动态变量

3

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

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

echo $var1;

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

$var是什么? - undefined
我正在设置的变量。变量的常量部分。它可以是任何 $name.$ct - undefined
6
请使用数组代替。 - undefined
2
为什么你不使用数组? - undefined
5个回答

3

您正在寻找变量变量

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

$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];

1
要明确一点:不仅仅是数组是解决问题的更好方案,而且使用变量变量几乎总是任何问题的最糟糕解决方案。 - undefined

2
你可以使用不同的语法来使用 {}
$ct = 1;

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

echo $var1;

尽管如此,仅使用数组不是更好吗? 工作范例

当我使用你的语法时,仍然出现未定义的变量。你测试过吗? - undefined
是的,我有;让我包含一个fiddle来证明一下:http://sandbox.onlinephpfunctions.com/code/66d57ab62d6fd1f76f239f7e6fec07eb825ce1ea - undefined

0

你可以用双$符号。

    $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;


0

请尝试这个,如果对你有用的话,请告诉我。 我使用一个前缀与动态变量。

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

echo $var1;

0

你可以很容易地使用数组来实现这个。但是如果你真的想要它以动态变量的方式单独存在,那么我还是建议你用数组的方式来帮助你。这样,你就可以追踪你的变量。

在下面提到的方法中,你甚至不需要使用额外的变量像$ct。只需要一个数组$var,并在循环后应用extract方法即可达到目的。

$var = [];

foreach( $record as $k => $rec )
{
 $var['var'.$k] = $rec['Name'];

}

extract($var);

echo $var0; //or $var_1 or $var_2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接