2017-07-27 86 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ł很高兴帮助你:) :) –