2017-07-27 13 views
1

多次元配列を作成するコンストラクタを作成しようとしています。私の結果は次のようにする必要があります: -多次元配列を作成するための構造体の構造が良く見える

Checkout my array $result_array

を今私が持っているエラーの場合:不正なタイプを相殺しました。私はxmlデータを扱うので、__toString()を使用しています。

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

あなたは、以下のようなあなたの2 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łあなたを助けてうれしい:) :) –

関連する問題