PHP变量故障

PHP变量故障,php,variables,Php,Variables,这样做的正确方法是什么? 这给了我一个错误: $lingue = array('IT','EN','FR'); $item = new stdClass(); $item->IDCat = 1; foreach($lingue as $l){ $item->Desc_{$l} = trim(addslashes($_POST['Desc_'.$l]); } 动态访问器必须用大括号括起来,并且在trim()调用的末尾缺少) 为了突出

这样做的正确方法是什么?
这给了我一个错误:

$lingue       = array('IT','EN','FR');
$item         = new stdClass();
$item->IDCat  =  1;

foreach($lingue as $l){
    $item->Desc_{$l} = trim(addslashes($_POST['Desc_'.$l]);     
}
动态访问器必须用大括号括起来,并且在
trim()调用的末尾缺少

为了突出显示
$item->{'Desc.'$l}=..
$item->Desc.{$l}=..
之间的区别:

//...
foreach($lingue as $l){
    $item->{'Desc_'.$l}    = trim(addslashes($_POST['Desc_'.$l]));
}
print_r($item);
// outputs:
/*
stdClass Object
(
    [IDCat] => 1
    [Desc_IT] => a
    [Desc_EN] => a
    [Desc_FR] => a
)
*/

//...
foreach($lingue as $l){
    $item->Desc_{$l}    = trim(addslashes($_POST['Desc_'.$l]));
}
print_r($item);
// outputs:
/*
stdClass Object
(
    [IDCat] => 1
    [Desc_] => Array
        (
            [IT] => a
            [EN] => a
            [FR] => a
        )

)
*/
这实际上和

//...
foreach($lingue as $l){
    $item->Desc_[$l]    = trim(addslashes($_POST['Desc_'.$l]));
}

在解析器中似乎是一种轻率行为。

如果您的问题是
$item->Desc{$l}=trim(addslashes($\u POST['Desc.'$l]);
尝试
$item->{'Desc.'$l}=trim(addslashes($\u POST['Desc.'$l]);

相反

您需要将整个表达式用卷曲的引号括起来:
{“Desc”.$l}

<> P>但是,如果语言集将是动态的,考虑使用数组来代替这个:

$item = new STDClass();
$item->Desc = new Array();

foreach($lingue as $l){
  $item->Desc[$l] = trim(addslashes($_POST["Desc_$l"]));
 }  

echo $item->Desc["IT"]; // outputs the italian description
其他意见:

请注意,如果要在数据库查询中使用这些值,
addslashes()
对SQL注入没有足够的保护。请使用正在使用的SQL库的字符串转义函数

使用<代码> $POST [“DeXYXYZ”] /<代码>不检查它是否被设置将抛出一个PHP通知,您希望避免。请考虑添加一个检查:

if (!empty($_POST["Desc_$l"]))
 $item->Desc[$l] = trim(addslashes($_POST["Desc_$l"]));
尝试:

$item->{'Desc_' . $l} = ....

“发布了6个新答案”。。哈哈,一定要抓住容易解析的错误。伙计们:pmissing
trim中(addslashes($\u POST['Desc.'$l]);
就像一直强调的缩进和格式问题一样,或者只是
$item->{“Desc u$l”
$\u POST['Desc u$l]
。仍然缺少
trim()
调用…;-)之后不是轻率的行为,只是替代的数组访问语法(它主要用于字符串偏移量访问,但现在正在被弃用。)@nikic:我知道它被用作字符串访问器。。。不知道它被用作替代数组访问器。谢谢你的信息。
if (!empty($_POST["Desc_$l"]))
 $item->Desc[$l] = trim(addslashes($_POST["Desc_$l"]));
$item->{'Desc_' . $l} = ....