Page 1 sur 1

Warning: Call-time pass-by-reference... !?

Posté : 14 janv. 2006, 12:35
par dark_vidor
Voici ma fonction :
function list_folder($path, $array)
{
	global $count_glob;

	if($path != '.')
	{
		$array[$count_glob] = $path;
		$count_glob ++;
	}

	$rep = $path;

	$ptr = opendir($rep);

	while(false !== ($file = readdir($ptr)))
		if($file != "." && $file != ".." && $file != "data" && $file != "index.php" && $file != "conf.txt" && $file != "thumb")
			if(is_dir($rep.'/'.$file))
				list_folder($rep.'/'.$file, &$array);
	closedir($ptr);
}
L'erreur qu'elle me retourne :
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/derniere/domains/derniere-bataille.net/public_html/test/galerie/index.php on line 69
La ligne 69 :
list_folder($rep.'/'.$file, &$array);
C'est la premiere fois que j'ai ce type d'erreur ...
Je comprend pas d'ou elle viens :roll:

Pouvez vous m'aider ? Merci :wink:

Posté : 14 janv. 2006, 12:54
par Truc
L'erreur vient du faite que tu passe l'argument (tableau) par référence => &
list_folder($rep.'/'.$file, &$array);
et que ce n'est pas précisé dans la fonction, change le parametre de la fonction en y ajoutant un &:
function list_folder($path, &$array) 
{
...

Posté : 14 janv. 2006, 13:53
par dark_vidor

Posté : 14 janv. 2006, 16:08
par jeff
voici un debut de reponse
Notez qu'il n'y a pas de signe de référence dans l'appel de la fonction, uniquement sur sa définition. La définition de la fonction est suffisante pour passer correctement des arguments par référence. Dans les versions récentes de PHP, vous devriez recevoir une alerte disant que "Call-time pass-by-reference" est obsolète lorsque vous utilisez un & dans foo(&$a);.
tente
function list_folder($path, &$array)
{
    global $count_glob;

    if($path != '.')
    {
        $array[$count_glob] = $path;
        $count_glob ++;
    }

    $rep = $path;

    $ptr = opendir($rep);

    while(false !== ($file = readdir($ptr)))
        if($file != "." && $file != ".." && $file != "data" && $file != "index.php" && $file != "conf.txt" && $file != "thumb")
            if(is_dir($rep.'/'.$file))
                list_folder($rep.'/'.$file, $array);
    closedir($ptr);
}

Posté : 14 janv. 2006, 16:10
par dark_vidor
cool 8)

Merci

heu une autre question ... avec la fonction readdir comment on fait pour les fichiers soit retournée dans l'ordre alphabétique ? :roll:

Posté : 14 janv. 2006, 16:19
par jeff
tu met tes fichier dans un tableau et tu fait un tri

Posté : 14 janv. 2006, 16:21
par dark_vidor
heu :?

Posté : 14 janv. 2006, 17:37
par Cyrano
Dans un tableau (array())
Et le tri avec asort() ;)

Posté : 14 janv. 2006, 17:39
par dark_vidor
j'ai chopper une explication de comment faire : http://php.developpez.com/faq/?page=fic ... ographique

j'vous remercie :wink: