Chercher dans un tableau

Petit nouveau ! | 4 Messages

14 sept. 2008, 13:07

Bonjour !

EDIT quand array_search ne trouve rien, il renvoie tout de même un résultat, faux.

A chaque fois que je développe en PHP je découvre que les tableaux ne se comportent pas comme je l'attends. Il est temps de réviser. Voici mon PB, il devrait vraiment être ultra-simple...:

Soit un tableau $dirList. Si je print_r($dirList);, j'obtiens :

Array ( [0] => . [1] => ./elephant/elephant_in_paris [2] => ./azero/demos [3] => ./azero/counternatures [4] => ./les_intouchables/now [5] => ./les_intouchables/demos_enfer [6] => ./les_intouchables/touche [7] => ./les_intouchables/tamuziga )

C'est donc bien un tableau, CQFD. Maintenant, je souhaiterai faire de menues choses avec. Par exemple, chercher dans ses valeurs une chaine, et obtenir la clé d'index correspondante. C à D, chercher "./les_intouchables/now", et obtenir "4".

Croyez-le où non, j'essaie depuis hier 21:00. J'ai éssayé array search(),is_array(), et array_keys(), tous sensés faire ça (renvoyer la clé d'index de la valeur trouvée) et j'obtiens TJS la valeur à la place (même pas la bonne en plus)... C à D je cherche $DirectoryToScan (valeur = ./les_intouchables/touche) dans $dirList, et au lieu de retourner "6" comme une fonction bien élevée, elle me retourne "./" ce qui est choquant car 1) elle trouve pas ce que je lui demande 2) elle trouve autre chose, ce qui est pire, et 3) Elle renvoie la VALEUR au lieu de la clé !! Je veux dire, le foirage total !!!

J'ai aussi essayé de permuter valeurs / clés à l'aide de array_flip(), ça fait *rien*. Rien !! Je lui demande poliment :

global $dirList;
array_flip($dirList);
print_r($dirList);

Rien ! Que dalle, la liste sort comme si j'avais rien fait RHAA !!

Comment faire une recherche dans un array ?? Une recherche qui *marche*, qui trouve $aiguille dans $tas_de_foin, et qui renvoie l'INDEX de $tas_de_foin[$aiguille] ?? HELP, je deviens OUF, je suis sur ce truc non-stop depuis 4, 5h !!

[email protected]/bondimanche

NB : Mon code (Ça ne fait rien de pratique, c'est juste un prototype, j'allais coder cette fonction quand j'ai découvert que je comprenais rienà la vie):
function browse($nav)
{
	global $DirectoryToScan;
	global $dirList;
	print_r($dirList);
	$dirListKey = in_array($DirectoryToScan, $dirList);
//	$dirListKey = array_keys($dirList, $DirectoryToScan);

	if ($nav == 'next') {
	echo ' $DirectoryToScan ='.'./'.$DirectoryToScan;
	echo ' $dirListKey ='.'./'.$dirListKey;
	}
}

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

21 sept. 2008, 02:22

Comment faire une recherche dans un array ?? Une recherche qui *marche*, qui trouve $aiguille dans $tas_de_foin, et qui renvoie l'INDEX
Tout simplement :
$index = array_search($aiguille, $tas_de_foin);
Remarque:
Tu peux aussi utiliser array_keys() pour retourner toutes les positions trouvées dans un tableau. Par contre, array_search() ne retourne que la première position trouvée.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène