【问题标题】:PHP concatanate variable namePHP 连接变量名
【发布时间】: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

标签: php


【解决方案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 中
    • 这不是正确的解决方案,但不是我投反对票,我还没有得分..
    猜你喜欢
    • 2012-07-29
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多