2014-08-30 70 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中的新特性或者需要對其有很好了解的東西。