2014-08-30 37 views
0

我有这样的阵列称为输入:PHP GET数组值

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,要求,使用MINLENGTH,的MaxLength,RegexName和RegexMsg。我曾尝试的foreach这样

foreach ($this->inputs as $input){ 
      echo $input['Id']; 
     } 

但它给我一个错误:无法使用类型InputValidation的对象数组

我该怎么办?谢谢

回答

1

inputs是一个数组,其中第一个元素(索引0)是一个对象。

但是在循环中,您尝试回显对象属性,就好像对象是数组一样。

尝试:

foreach ($this->inputs as $input){ 
    echo $input->Id; 
} 

相比的JavaScript,PHP中的对象不能使用[]存取访问,你必须使用->访问。

+0

有一个等价的语法,在某些情况下是必需的(例如标识符名称中的破折号):'$ input - > {'Id'}' – ComFreek 2014-08-30 16:50:41

+0

谢谢。但这是错误。未定义的属性:InputValidation :: $ Id – user3493223 2014-08-30 16:51:54

0

是的,我犯了一个错误。 数组输入具有第一个索引和一个对象InputValidation。 该对象还有一个名为InputValidation的PRIVATE属性(它是一个关联数组,它位于您正在查找的IdIindex处)。

但这个属性是私人的。您将无法直接访问它。你需要一个关于对象InputValidation的方法。

如果属性格式不是私人,但公众,你woukd能够访问如下:

inputs [0]-> InputValidation-> InputValidation['Id']; 

1日建议:避免它具有比此对象相同名称的属性的对象。这是令人困惑的(我一直在困扰它!)

第二建议:阅读有关您使用的对象和PHP对象DOC文档。

来自Comfreek的建议看起来像PHP中的新特性或者需要对其有很好了解的东西。