PHP 连接变量名

Posted

技术标签:

【中文标题】PHP 连接变量名【英文标题】:PHP concatanate variable name 【发布时间】:2016-04-11 10:06:03 【问题描述】:

Propriete 实体中,我有 5 个字段称为 image1 image2 image3 image4 image5

我不想在 for 循环中添加这些字段

我试过了,但它不起作用:

  for($i=0;$i<count($this->request->data['files'])&&$i<5;$i++)
               //... some code
                    $propriete->'image'.$i+1 = $file['name'];
                
            

有人可以帮我吗?

编辑

这是我的循环代码:

for($i=0; $i<count($this->request->data['files']) && $i<5; $i++)
    $file=$this->request->data['files'][$i];
    $ext = substr(strtolower(strrchr($file['name'], '.')), 1); //get the extension
    $arr_ext = array('jpg', 'jpeg', 'gif'); //set allowed extensions
    if(in_array($ext, $arr_ext))
    
        //do the actual uploading of the file. First arg is the tmp name, second arg is
        //where we are putting it
        move_uploaded_file($file['tmp_name'], WWW_ROOT . '/img/' . $file['name']);
        debug($file['name']);
        //prepare the filename for database entry
        $propriete->'image'.$i+1 = $file['name'];
    

【问题讨论】:

$file['name'] 没有意义,请显示足够的代码来解释这个变量的来源 @RiggsFolly 检查编辑 你能指定错误出现在哪一行吗?是 $propriete->'image'.$i+1 = $file['name'];你没有得到文件名吗?或者无法在对象属性中设置文件名 那么实际的问题是什么但它不起作用对我们没有多大帮助 问题是$prorpete->image1 return null 【参考方案1】:

您的代码应该可以正常工作,只是缺少括号,这会使您的连接变得混乱

$propriete->'image'.($i+1)="test";

这个简单的测试也可以证明这一点

$i=2;
echo 'image'.$i+1;  // 1 :)

VS

echo 'image'.($i+1);  //image3

【讨论】:

【参考方案2】:

把每一个方法的值放到一个变量中来存储值然后使用。例如

$values = $this->request->data['files'];

如果不先将数据放入变量中,则不能循环数据。

如果您找不到文件名,问题应该是您以错误的方式命名对象属性。您应该用引号将 $i+1 括起来。

【讨论】:

我将请求中的数据存储在 $file 中 这不是正确的解决方案,但不是我投反对票,我还没有得分..

以上是关于PHP 连接变量名的主要内容,如果未能解决你的问题,请参考以下文章

php中变量名$_abc是否合法的???急用快点

PHP中的变量

PHP PHP变量名中的变量

PHP变量名区分大小写

PHP变量名中的变量

PHP中的变量名,函数名,类名是区分大小写的吗