2016-01-02 1 views
0

J'ai un tableau DOMNodeList que j'essaie de convertir en un tableau multidimensionnel. Ceci est ma tentative de faire:Convertir un tableau DOMList en un tableau d'objets multidimensionnel

$array = (object) array(); 
      foreach ($this->timeofday as $key => $node) { 
         $array->{$key} = (object) array(); 

       if (get_class($node) === 'DOMElement') { 
        if ($node->hasAttribute('class')) { 
         if ($node->getAttribute('class') === 'cmil_salong') { 
           $array->{$key}->salong = $node->nodeValue; 
         } 

         if($node->getAttribute('class') === 'cmil_time'){ 
           $array->{$key}->time = $node->nodeValue; 
         } 

         if($node->getAttribute('class') === 'mv_3d'){ 
           $array->{$key}->threed = $node->nodeValue; 
         } 

         if($node->getAttribute('class') === 'cmil_rs'){ 
           $array->{$key}->freeseats = $node->nodeValue; 
         } 

         if($node->getAttribute('class') === 'mv_txt'){ 
           $array->{$key}->textad = $node->nodeValue; 
         } 
        } 
       } 

       if (get_class($node) === 'DOMAttr') { 
        if ($node->nodeName === 'href') { 
          $array->{$key}->href = $node->nodeValue; 
        } 
       } 

      } 

qui produit:

stdClass Object 
(
    [0] => stdClass Object 
     (
      [salong] => Tokyo 
     ) 

    [1] => stdClass Object 
     (
      [time] => 15:00 
     ) 

    [2] => stdClass Object 
     (
      [threed] => 
     ) 

    [3] => stdClass Object 
     (
      [freeseats] => 20 
     ) 

    [4] => stdClass Object 
     (
      [textad] => 
     ) 

    [5] => stdClass Object 
     (
      [href] => http://example.com/1 
     ) 
And so on.. 

Mais le résultat attendu est:

stdClass Object 
(
    [1] => stdClass Object 
     (
      [salong] => Tokyo 
      [time] => 11:30 
      [threed] => 
      [textad] => 1 
      [freeseats] => 20 
      [href] => http://example.com/1 
     ) 

    [2] => stdClass Object 
     (
      [salong] ... And so on 
     ) 

Question:

  1. Comment je convertis le DOMNode Liste à un tableau multidimensionnel?

Répondre

0

peut-être c'est la chose que vous voulez:

$mainKey=-1;$keyCount=0; 
     $array = (object) array(); $parant = ""; 
      foreach ($this->timeofday as $key => $node) { 
      if(($keyCount == 0) || $keyCount >= 5) {$keyCount = 0;    
        $mainKey++;$array->{$mainKey} = (object) array();} 

      $array->{$mainKey}->{$key} = (object) array(); 
      if (get_class($node) === 'DOMElement') { 
       if ($node->hasAttribute('class')) { 
        if ($node->getAttribute('class') === 'cmil_salong') { 
          $array->{$mainKey}->{$key}->salong = $node->nodeValue; 
        } 

        if($node->getAttribute('class') === 'cmil_time'){ 
          $array->{$mainKey}->{$key}->time = $node->nodeValue; 
        } 

        if($node->getAttribute('class') === 'mv_3d'){ 
          $array->{$mainKey}->{$key}->threed = $node->nodeValue; 
        } 

        if($node->getAttribute('class') === 'cmil_rs'){ 
          $array->{$mainKey}->{$key}->freeseats = $node->nodeValue; 
        } 

        if($node->getAttribute('class') === 'mv_txt'){ 
          $array->{$mainKey}->{$key}->textad = $node->nodeValue; 
        } 
       } 
      } 

      if (get_class($node) === 'DOMAttr') { 
       if ($node->nodeName === 'href') { 
         $array->{$mainKey}->{$key}->href = $node->nodeValue; 
       } 
      } 

     } 

Il devrait y avoir vérification de nœud parent ou si les noeuds sont 5 comptent alors les nœuds et changer le principal indice de tableau en conséquence.

+0

Merci! Mais cela n'a pas résolu le problème. Cela produit un tableau ressemblant à: 'StdClass Object ([0] => StdClass Object ([0] => StdClass Object ([Salong] => Tokyo)) et ainsi de suite. –