naviguer dans un array()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : naviguer dans un array()

par albat » 11 nov. 2008, 00:02

Modération :
toony.m, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par Invité » 10 nov. 2008, 15:06

Merci beaucoup! :D

par stopher » 10 nov. 2008, 14:15

Pour illustrer la réponse de Calimero avec array_search() :
$chaine = ";123;65498;4;6548;5499;65487;";

$compare="6548";
$tableau = explode(';', $chaine);

if (in_array($compare,$tableau))
{
	(string)$precedent	=	"none";
	(string)$suivant	=	"none";
	(int)$key	=	array_search($compare,$tableau);
	if($key-1>=0)
	{
		$precedent	=	$tableau[$key-1];
	}
	
	if($key+1<=count($tableau))
	{
		$suivant	=	$tableau[$key+1];
	}
}

echo "Resultat<br>$precedent < $compare < $suivant <br>";
bonne continuation ...

cdt,
Christophe.

Re: naviguer dans un array()

par Calimero » 10 nov. 2008, 13:42

Bonjour,

C'est à peu près aussi facile à faire qu'à dire :
$chaine = ";123;65498;4;6548;5499;65487;";

$compare="6548";
$tableau = explode(';', $chaine);

// On parcourt le tableau
foreach($tableau as $index=>$valeur){
  // On cherche une égalité avec une valeur donnée pour l'élément courant
  if($valeur==$compare){
    // Si oui, on affecte les variables
    $precedent=$tableau[$index-1];
    $suivant=$tableau[$index+1];
    break;
  }
}
Le code est prêt à l'emploi à un détail près : si la valeur recherchée est située à une extrêmité du tableau, la valeur "precedent" ou "suivant" peut ne pas exister du tout : il faut juste gérer ces deux possibilités :-)

Autre façon de faire, tu peux aussi utiliser array_search()

naviguer dans un array()

par toony.m » 10 nov. 2008, 12:37

Bonjour,

J'ai une chaine contenant des nombre de 1 à 5 chiffres séparés par des ;
ex:
$chaine = ;123;65498;4;6548;5499;65487;
Je cherche un moyen pour retrouver la portion de caractère avant et après un des ces nombres.
Ex:
Si $recherche=6548, $precedent=4 et $suivant=5499

J'ai pensé explosé ma chaine en tableau:
$tableau = explode(';', $chaine);

Mais comment retrouver la ligne n-1 et n+1 dans un tableau si je connais une valeur ?