【问题标题】:PHP dynamical variable declarationPHP动态变量声明
【发布时间】:2016-03-10 21:27:56
【问题描述】:

我正在使用以下代码动态声明变量:

$fields = array('name1', 'name2');

foreach($fields as $field) {
    $$field = false;
}

问题是变量名重叠,因为我使用了多个数组。

问题是:如何使用前面的方法在变量名后面附加一个字母?

例如,如果我们将字母 F 附加到前面的示例中,那么我们将得到 $Fname1, $Fname2

我试图做 $F$field 但这不起作用,我也尝试在循环内设置 $field = "F"+$field 但是也没用。

【问题讨论】:

  • 如果你在这方面没有遇到任何问题,那么也许 PHP 会告诉你这不是你想要做的任何事情的最佳方式......也许解释一下你'正在努力实现,我们也许可以向您展示一种更好的替代方法....甚至可能像$fieldSet = array_fill_keys($fields, false);...这样简单。但是如果您有重复的变量名,那么您肯定会接近这个错误的方式
  • 我同意 Mark 的观点 - 在 IMO 中,您需要使用可变变量的情况并不多。通常只使用关联数组就可以解决问题,但可以让您避免发生此类问题。
  • 数组用于动态设置变量名、构建表单字段、sql查询。到目前为止唯一的问题是字段名称重叠的情况(使用多个表时)
  • 要连接字符串,请使用句点“.”,而不是加号“+”。
  • @C.Liddell 我不敢相信我忽略了这一点......谢谢。

标签: php variable-declaration


【解决方案1】:

试试这个:

$fields = array('name1', 'name2');

foreach($fields as $field) {
    $field = "F" . $field;
    $$field = false;
}

【讨论】:

    【解决方案2】:

    尝试使用这个:

    $fields = array('name1', 'name2', 'name1', 'name2', 'name2');
    
    foreach($fields as $field) {
        while(!is_null($$field)) {
            $field = "F".$field;
        }
        $$field = false;
        var_dump($field);
    }
    

    输出:

    string(5) "name1"
    string(5) "name2"
    string(6) "Fname1"
    string(6) "Fname2"
    string(7) "FFname2"
    

    因此,您将为每个重叠的变量附加F 字母:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2014-12-31
      • 2017-01-31
      相关资源
      最近更新 更多