Page 1 sur 1

erreur dans une fonction

Posté : 16 août 2012, 09:44
par bache9
bonjour, ci dessous le code suivant:
function makeArbo($array, $currentParent = '', $currLevel = 0, $prevLevel = -1, &$result = '')
{
    if ((is_array($array)) && (count($array) > 0))
    {
        foreach ($array as $item)
        {
            if ($currentParent == $item['PARENT'])
            {						
                if ($currLevel > $prevLevel)
                    $result .= '<ul>'; 
                
                if ($currLevel == $prevLevel)
                    $result .= '</li>';
                
                $result .= '<li>'.$item['DESIGNATION'].'</li>';
                
                if ($currLevel > $prevLevel)
                    $prevLevel = $currLevel;
                
                $currLevel++;
                
                makeArbo($array, $item['ORG'], $currLevel, $prevLevel, $result);
                
                $currLevel--;
            }	
        }

        if ($currLevel == $prevLevel)
            $result .=  '</li></ul>';

        return $result;
    }
}
l'appel de la fonction se fait de la manière suivante:
echo makeArbo($nodes);
le problème est que lorsque j'exécute le script l'erreur suivante arrive:
Parse error: parse error, expecting `'&'' or `T_VARIABLE' or `T_CONST' in C:\wamp\www\test_import\oracle.php on line 2 :?
la ligne 2 est
function makeArbo($array, $currentParent = '', $currLevel = 0, $prevLevel = -1, &$result = '')
c'est quoi l'erreur et comment la corriger. je me trouve vraiment bloqué.
Merci pour l'aide que vous allez fournir. :)

Re: erreur dans une fonction

Posté : 16 août 2012, 09:54
par sirakawa
bjr,
lire:
http://www.php.net/manual/fr/language.r ... s.pass.php
Qui plus est, il serait plus simple de procéder ainsi:
function toto ($p,$q)
{

return $result;
}
$result = toto(1,2);

Re: erreur dans une fonction

Posté : 16 août 2012, 10:04
par bache9
ça n'a pas marché.
est ce que tu peux effectuer les modifications sur mon code pour que je comprenne? :)
Merci d'avance.

Re: erreur dans une fonction

Posté : 16 août 2012, 10:51
par moogli
comme l'indique la documentation (que t'indique sirakawa)
A partir de PHP 5.3.0, vous devriez recevoir une alerte disant que "Call-time pass-by-reference" est obsolète, lorsque vous utilisez un & dans foo(&$a);.
donc vire le & dans déclaration de la fonction pour commencer !

@+

Re: erreur dans une fonction

Posté : 16 août 2012, 12:04
par Invité
je m'excuse mais en attendant le passage au php 5 l'application est travaillée avec php4 et je dois faire avec.
Merci.

Re: erreur dans une fonction

Posté : 16 août 2012, 13:09
par xTG
Et ton wamp il tourne avec quelle version de PHP à tout hasard...
Car vu comment c'est merdique pour le faire démarrer ne serais-ce qu'un PHP 5.0.5 j'imagine pas avec du PHP4...

Re: erreur dans une fonction

Posté : 16 août 2012, 14:04
par moogli
pis le passage par référence c'est la mal na :mrgreen: :mrgreen:

Plus sérieusement je suis d'accord avec xTG, ton wam utilise surement php 5.3 ?

as tu essayé sans le & histoire de voir ce qui se passe ? (+ la vérif de version de php).

@+

Re: erreur dans une fonction

Posté : 16 août 2012, 14:17
par bache9
non mon wamp utilise php 4.3.9

Re: erreur dans une fonction

Posté : 16 août 2012, 14:41
par sirakawa
As-tu simplement tenté:
bonjour, ci dessous le code suivant:
function makeArbo($array, $currentParent = '', $currLevel = 0, $prevLevel = -1, $result = '')
{
    if ((is_array($array)) && (count($array) > 0))
    {
        foreach ($array as $item)
        {
            if ($currentParent == $item['PARENT'])
            {						
                if ($currLevel > $prevLevel)
                    $result .= '<ul>'; 
                
                if ($currLevel == $prevLevel)
                    $result .= '</li>';
                
                $result .= '<li>'.$item['DESIGNATION'].'</li>';
                
                if ($currLevel > $prevLevel)
                    $prevLevel = $currLevel;
                
                $currLevel++;
                
                makeArbo($array, $item['ORG'], $currLevel, $prevLevel, $result);
                
                $currLevel--;
            }	
        }

        if ($currLevel == $prevLevel)
            $result .=  '</li></ul>';

        return $result;
    }
}
l'appel de la fonction se fait de la manière suivante:
echo makeArbo($nodes);
le problème est que lorsque j'exécute le script l'erreur suivante arrive:
Parse error: parse error, expecting `'&'' or `T_VARIABLE' or `T_CONST' in C:\wamp\www\test_import\oracle.php on line 2 :?
la ligne 2 est
function makeArbo($array, $currentParent = '', $currLevel = 0, $prevLevel = -1, &$result = '')
c'est quoi l'erreur et comment la corriger. je me trouve vraiment bloqué.
Merci pour l'aide que vous allez fournir. :)