8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je solicite votre aide sur un petit problème que je n'arrive pas à régler avec le fonctionnement d'une boucle FOREACH en PHP, tout d'abord voici mon code (un peu long):

<?php
function f_count_files($folder, $ext, $subfolders) {
	if(substr($folder, -1) != '/')
	$folder .= '/';
	$array = 0;
	if(is_array($ext))
	$array = 1;
	$rep=@opendir($folder);
	if(!$rep)
	return 0;
	$nb_files = 0;
	while($file=@readdir($rep))
	{
		if($file == '.' || $file == '..')
		continue;
		if(is_dir($folder . $file) && $subfolders)
		$nb_files += f_count_files($folder . $file, $ext, 1);
		else if(!$array && substr($file, -strlen($ext))== $ext)
		$nb_files++;
		else if($array==1 && in_array(strtolower(substr(strrchr($file,'.'),1)), $ext))
		$nb_files++;
	}
	closedir($rep);
	return $nb_files;
}
//
$ext=array('txt', 'png', 'gif', 'jpg', 'jpeg');
$folder='uploads/';
foreach($ext as $list)
{
	echo "['";
	echo $list;
	echo "', ";
	echo f_count_files($folder, $list, 1);
	echo "], ";
}
?>

Et maintenant voici ce qu'il affiche :

['txt', 96], ['png', 0], ['gif', 0], ['jpg', 13], ['jpeg', 0][#red], [/#]

Voilà, donc mon soucis c'est que je voudrais que sur la dernière valeure du tableau $ext, au lieu de lancer la commande
echo "], ";
il lance la commande
echo "]";
de sorte à ce qu'il n'y ai pas la virgule en trop à la fin de l'affichage.

Merci de votre aide et à bientôt je l'espère !
Modifié par cocochepeau (17 May 2012 - 21:04)
Salut

trouver le dernière entrée et faire une condition :

$ext=array('txt', 'png', 'gif', 'jpg', 'jpeg');
$end = end($ext);
$folder='upload/';
foreach($ext as $list)
{
	if($list == $end){
		echo "['";
		echo $list;
		echo "', ";
		echo f_count_files($folder, $list, 1);
		echo "]";
	}else{
		echo "['";
		echo $list;
		echo "', ";
		echo f_count_files($folder, $list, 1);
		echo "], ";
	}
}


;)
Modifié par G3ronim0 (17 May 2012 - 20:56)
Ou faire une boucle classique.
$count = count($ext);
for ($i = 0; $i < $count; $i++) {
    // Ton code
    if ($i == $count - 1)
        echo ', ';
}