【问题标题】:how do i create a variable from another variable name?如何从另一个变量名创建变量?
【发布时间】:2009-03-20 00:53:19
【问题描述】:

好的...在 php 中我该怎么做?给定以下情况:

// array of letters
var $letters = array('a', 'b', 'c');
// loop through array and create empty arrays with names like $a, $b, $c
foreach($letters as $letter) {
    var $$letter = array();
}

【问题讨论】:

标签: php variables loops


【解决方案1】:

您的代码几乎是正确的。您只需要删除第 2 行和第 5 行的 'var'。

// array of letters
$letters = array('a', 'b', 'c');
// loop through array and create empty arrays with names like $a, $b, $c
foreach($letters as $letter) {
    $$letter = array();
}

这可以正常工作(如您所述)。我测试过了。

更多information on variable variables here.

顺便说一句,我建议不要在你的 PHP 中使用 eval()。

【讨论】:

  • 您可能想要查看在您的 php.ini 中(在您的开发机器上)打开 display_errors - 需要这样做以显示解析错误。此外,PHP 命令行界面可以进行语法检查(即称为 lint)——我已将其集成到我的文本编辑器/IDE 中。
【解决方案2】:

您可能不想这样做。想要使用可变变量通常表明无法理解数据结构和/或过于聪明。如果你真的想这样做,你可以说...

extract(array_fill_keys($letters, array()));

...但最好不要。使用嵌套数组可能是一个更好的主意 - 特别是因为您可以说 $nested['a'][] = 5 并且 PHP 会将值附加到数组中,如果没有则创建一个。或者,您可以直接说 $varname['key'] = 123,然后 PHP 会再次为您自动创建数组。

【讨论】:

  • 可变变量实际上非常有用和强大,我当然多次希望它们超过数组。示例:使用返回 SQL 的列数组填充模型实例。
  • seanmonstar - 你的意思是像 extract() us.php.net/manual/en/function.extract.php ?
  • 不,我不是说像提取物。 extract 只是用变量填充当前范围。变量变量允许我将数组中的值分配为模型实例的属性。
【解决方案3】:

查看 eval() 函数:Eval

【讨论】:

  • 我建议不要使用 eval。没有任何情况下 eval() 是唯一的解决方案,甚至是最好的解决方案,并且建议在这里使用它是不明智的,在我看来,这很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 2020-10-09
  • 2012-09-08
  • 2020-11-09
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多