Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 09h24   #1
Invité régulier
 
Homme julien
Étudiant
Inscription : mai 2011
Messages : 94
Détails du profil
Informations personnelles :
Nom : Homme julien
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 94
Points : 7
Points : 7
Par défaut Fonction tri par rapport aux occurences

Bonjour,

J'ai cherché sur le net des fonctions de tri que je pouvais modifier pour coller à ma problématique : j'ai un tableau de caractères, mais dans ce tableau j'ai plusieurs fois la même chaine. j'aimerai avoir (soit dans le même tableau soit dans un autre) un tableau qui contient seulement la liste de chaque chaines différentes (une fois chaque caractère) .

Par exemple j'ai une liste de pc : pc1, pc2, pc2, pc3, pc1 etc et je voudrais avoir un tableau : pc1, pc2, pc3 etc..

J'ai essayé plusieurs codes etc, je me suis arraché les cheveux ^^ alors que je sais pertinemment qu'il doit exister soit une fonction toute faite soit un manière de procéder connus

Merci de vos réponses/conseils
pra3t0r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 10h45   #2
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
bonjour,

alors si chaque entités de ta chaine est séparée par une ",", c'est assez facile :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
$sortie=array();
$chaine = "PC1,PC2,PC1,PC3,PC1,PC2,PC3";
 
$tabChaine = explode(',',$chaine);
 
    for ( $i=0;$i<count($tabChaine);$i++){
        if(!in_array($tabChaine[$i],$sortie)){
        $sortie[$tabChaine[$i]] = 'ce que tu veux';
        }
    }
 
print_r($sortie);
 
?>
il existe aussi des fonction comme array_unique

http://php.net/manual/fr/function.array-unique.php
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 11h10   #3
Invité régulier
 
Homme julien
Étudiant
Inscription : mai 2011
Messages : 94
Détails du profil
Informations personnelles :
Nom : Homme julien
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 94
Points : 7
Points : 7
Désolé je m’étais mal exprimé ma "chaine" avec mes "," c'est censé représenté ce qu'il y a dans le tableau (pour chaque élément)

sinon ok, pour la fonction unique je vais la tester des que la première partie de ma fonction marche ^^" (elle va chercher et lister selon un critère et mettre le résultat dans un tableau, des fichiers dans plusieurs répertoires)

Pour info voilà mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function get_machines_w()
{
	$machine = get_machines();
	$taille = count($machine[0]);
	echo $taille;
	for ($j=0;$j<$taille;$j++)
	{
		$cible = '/var/www/html/munin/' . $machine[0][$j] . '/' . $machine[0][$j];
		$dir = opendir($cible);
		$vrai = 1;
		while ($file = readdir($dir) && $vrai == 1)
		{
			if($file != '.' && $file != '..')
			{
				if(preg_match("#^snmp_.+#", $file))
				{
					$tabf[$j] = $machine[0][$j];
					$vrai = 0;
				}
			}
		}
	}
 
/* une fois que mes machines sont dans le tableau 'tabf' (elles y sont plusieurs fois) ici je ferais appel
à la fonction array_unique.
*/
 
	closedir($dir);
	echo '<pre>';
	print_r($tabf);
	echo '</pre>';
 
closedir($dir);
 
}
pra3t0r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 11h52   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 999
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 999
Points : 5 049
Points : 5 049
Citation:
j'aimerai avoir (soit dans le même tableau soit dans un autre) un tableau qui contient seulement la liste de chaque chaines différentes (une fois chaque caractère) .
array_unique.

Remarque, c'est plus simple si tu omets les insertions d'éléments déjà présents avec in_array.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h01   #5
Invité régulier
 
Homme julien
Étudiant
Inscription : mai 2011
Messages : 94
Détails du profil
Informations personnelles :
Nom : Homme julien
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 94
Points : 7
Points : 7
Merci le array_unique marche bien =)

j'ai un autre soucis maintenant sur mon tableau :/.
Ma fonction que j'ai faites me renvois un array.

Seulement quand je récupére mon array de 1) il est sous la forme array[][] et pas sous la forme array[] (bon ça à la limite c'est pg ) mais l'indice de mes données n'est pas successif.. par exemple j'ai ça :

Code :
1
2
3
4
5
6
7
8
Array
(
    [1] => pclaspfl
    [2] => pcgauss1
    [5] => pccb
    [9] => pcgauss3
    [12] => pcgauss2
)
au lieu d'avoir ça :

Code :
1
2
3
4
5
6
7
8
Array
(
    [0] => pclaspfl
    [1] => pcgauss1
    [2] => pccb
    [3] => pcgauss3
    [4] => pcgauss2
)
Donc je ne sais pas si c'est "normal" et si il y a une fonction qui remet tout ça en place.. j'ai regardé dans le "manuel php" à la rubrique array mais ya tellement de fonctions .. ^^"
pra3t0r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h17   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 999
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 999
Points : 5 049
Points : 5 049
Si tu veux renuméroter les indices, tu peux utiliser array_values mais je vois pas vraiment à quoi ça va t'avancer vu que c'est les valeurs qui t'intéressent...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h32   #7
Invité régulier
 
Homme julien
Étudiant
Inscription : mai 2011
Messages : 94
Détails du profil
Informations personnelles :
Nom : Homme julien
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 94
Points : 7
Points : 7
Oui enfait les valeurs je les exploite via une boucle for. Je me sert de ma variable incrémentée pour parcourir mon tableau (ma variable doit être = à l'indice du tableau : normal quoi) mais au moment au j’écris ceci ^^" je viens de penser à une chose => le foreach --'
Si je fais un foreach je n'ai plus besoin de ma variable incrémentée --'
pra3t0r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h05   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 999
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 999
Points : 5 049
Points : 5 049
Au passage, foreach est la boucle la plus rapide pour les lectures: http://www.phpbench.com/
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h59.


 
 
 
 
Partenaires

Hébergement Web