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 连接变量名的主要内容,如果未能解决你的问题,请参考以下文章