2017-07-27 83 views
1

我想創建一個多維數組的構造函數。我的結果應該是這樣的: -如何看起來良好的結構創建多維數組

Checkout my array $result_array

現在我有錯誤:非法偏移類型。請注意,我有als使用__toString()因爲我工作的XML數據。

class Property { 

    public $xmlClass; 
    public $elemClass = ''; 
    public $first_array = array(); 
    public $result_array = array(); 
    public $data = ''; 
    public $data2 = ''; 

    public function __construct($xml, $elem) { 
     $this->xmlClass = $xml; 
     $this->elemClass = $elem; 

     foreach ($xml->xpath('//*[@baza]') as $val) { 
      $this->first_array[] = $val; 
      foreach ($val->ksiazka as $value) { 
       $data = $value->$elem->__toString(); 
       $this->result_array[$this->first_array][] = $data; 
      } 
     } 
    } 

    public function getResult() { 
     return $this->result_array; 
    } 

} 

$result_autor = new Property($xml, 'autor'); 
$autor = $result_autor->getResult(); 

回答

1

你需要改變你的兩個foreach()象下面這樣: -

foreach($xml->xpath('//*[@baza]') as $val) { 
    //$this->first_array[] = $val; not needed 
    foreach($val->ksiazka as $key=> $value){ //check $key here 
     $data = $value->$elem->__toString(); 
     $this->result_array[$key][] = $data; // add $key hear 
    } 
} 

如果上面沒有奏效然後檢查這也太 -

foreach($xml->xpath('//*[@baza]') as $key=> $val) { //check $key here 
    //$this->first_array[] = $val; not needed 
    foreach($val->ksiazka as $value){ 
     $data = $value->$elem->__toString(); 
     $this->result_array[$key][] = $data; // add $key hear 
    } 
} 
+0

這就是它!非常感謝你,這兩個例子。我仍然在學習它是如何工作的。 –

+0

@Michał很高興幫助你:) :) –