2010-09-25 6 views
0

J'ai un petit problème avec le pointeur opperator php (&). Je veux boucler une boucle while, qui écrit des données dans un tableau. Chaque fois qu'il est supposé écrire dans la dimension suivante du tableau (1er dans $ array, puis dans $ array [0], puis dans array [0] [0], etc). Je voulais le faire en reliant à $ array avec un pointeur, puis en changeant le pointeur comme ceci:Comment remplacer l'assomiation de pointeur dans php? Ou comment opérer sur des tableaux avec n dimensions?

$pointer = &array; 
while($bla){ 
    $pointer = &$pointer[0]; 
} 

Donc, chaque fois que tout est déclenché les liens pointeur vers une autre dimension de tableau $. Cela ne semble pas fonctionner si ...

J'apprécierais vraiment votre aide, merci.

+0

Veuillez dire référence, pas pointeur;) Un pointeur est autre chose. – NikiC

Répondre

0

J'ai essayé votre code et cela fonctionne. Test:

<?php 
    error_reporting(E_ALL | E_STRICT); 

    $array = array(); 
    $ptr =& $array; 
    for ($i = 0; $i < 10; ++$i) { 
     $ptr[0] = array(); 
     $ptr =& $ptr[0]; 
    } 

    unset($ptr); 
    var_dump($array); 

    $ptr =& $array; 
    while (!empty($ptr)){ 
     $ptr =& $ptr[0]; 
     var_dump($ptr); 
    } 

Cette première crée le tableau, puis exécute la boucle.

+0

Vous avez raison. J'ai l'impression d'avoir un autre bug dans mon code. Je vous remercie! – yajRs

0

Je ne sais pas si c'est ce que vous vouliez, mais vous y êtes. :-)

$a = array(); 

$b = &$a; 

for ($i = 0; $i < 6; $i++) { 
    $a[0] = array(); 
    $a = &$a[0]; 
} 

print_r($b); 

Sorties:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => Array 
         (
          [0] => Array 
           (
            [0] => Array 
             (
              [0] => Array 
               (
               ) 

             ) 

           ) 

         ) 

       ) 

     ) 

)