我有一个名为inputs的数组:
Array ( [0] => InputValidation Object ( [array:InputValidation:private] => Array ( [Id] => demo1 [Required] => [MinLength] => 10 [MaxLength] => [RegexName] => [RegexMsg] => ) ) [1] => InputValidation Object ( [array:InputValidation:private] => Array ( [Id] => demo2 [Required] => [MinLength] => 20 [MaxLength] => [RegexName] => [RegexMsg] => ) ) )
我必须获得值Id,Required,MinLength,MaxLength,RegexName和RegexMsg。我试图像这样预言
foreach ($this->inputs as $input){
echo $input['Id'];
}
但是它给了我一个错误:不能使用InputValidation类型的对象作为数组
我该怎么办?感谢
答案 0 :(得分:1)
inputs
是一个数组,其中第一个元素(索引0)是一个对象。
但是在循环中,您尝试回显对象属性,就像对象是数组一样。
尝试:
foreach ($this->inputs as $input){
echo $input->Id;
}
与JavaScript相比,使用[]
访问器无法访问PHP中的对象,您必须使用->
访问者。
答案 1 :(得分:0)
是的我犯了一个错误。 数组输入具有第一个索引,其对象为InputValidation。 该对象还有一个名为InputValidation的PRIVATE属性(它是一个关联数组,位于您正在寻找的IdIindex)。
但这个属性是私有的。您无法直接访问它。你需要一个对象InputValidation的方法。
如果这个属性不是私有的而是公开的,那么你可以按照以下方式访问它:
inputs [0]-> InputValidation-> InputValidation['Id'];
第一条建议:避免使对象具有与此对象同名的属性。那令人困惑(我被困在里面!)
第二条建议:阅读有关您正在使用的对象和PHP对象文档的文档。
Comfreek的建议看起来像PHP中的新功能或需要熟悉它的东西。