erreur dans une fonction

bache9
Invité n'ayant pas de compte PHPfrance

16 août 2012, 09:44

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. :)

Mammouth du PHP | 2278 Messages

16 août 2012, 09:54

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);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

bache9
Invité n'ayant pas de compte PHPfrance

16 août 2012, 10:04

ça n'a pas marché.
est ce que tu peux effectuer les modifications sur mon code pour que je comprenne? :)
Merci d'avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 août 2012, 10:51

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 !

@+
Il en faut peu pour être heureux ......

Invité
Invité n'ayant pas de compte PHPfrance

16 août 2012, 12:04

je m'excuse mais en attendant le passage au php 5 l'application est travaillée avec php4 et je dois faire avec.
Merci.

ViPHP
xTG
ViPHP | 7331 Messages

16 août 2012, 13:09

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...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 août 2012, 14:04

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).

@+
Il en faut peu pour être heureux ......

bache9
Invité n'ayant pas de compte PHPfrance

16 août 2012, 14:17

non mon wamp utilise php 4.3.9

Mammouth du PHP | 2278 Messages

16 août 2012, 14:41

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. :)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD