de foreach a in_array comment faire?

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 : de foreach a in_array comment faire?

par viskor » 16 janv. 2009, 14:40

ha merci, je vais essayer de finir, puis je mettrais ici le resultat final pour te montrer, et montrer au autre utilisateur ce qu'il es possible de faire grace a ce system.


voici ce que j'ai fait:

http://www.one-generation.fr.nf/membres ... r.php?id=2

en bref quand je suis co, la baniere est verte, quand je suis deco, elle es rouge ^^

par Ryle » 16 janv. 2009, 00:15

oki, donc effectivement, il te suffit de passer par une variable et d'afficher le statut du gars une fois sortit de la boucle :
$userConnecte = false; // ma variable

foreach( $aTotalPlayers as $aPlayer ) {  
        if ($aPlayer['Nickname'] == 'Mankar_Rodriguez') // Si Mankar_Rodriguez est une chaine, il faut la mettre entre " ou ' :) 
        {  
            $userConnecte = true;  // user trouvé, on met à jour la variable
            break; // quand l'utilisateur est trouvé, on arrête la boucle, c'est pas la peine de continuer :) 
        }  
}

if ($userConnecte == true)
  echo '<b style="color:green;"> connect </b>';  
else
  echo '<b style="color:red;"> pas connect </b>';  

echo '<br />';

par viskor » 16 janv. 2009, 00:00

merci a toi, sa marche, mais enfait, moi j'utiliserais ce script dans une userbar.

mon but premier serais de faire une banniere avec requete vers un serveur Sql pour recuperer les donnee et les afficher dans une image faite par DG, j'ai deja preparer le code, mais j'aimerais que sa affiche un statut par exemple: connecter/deconnecter.

la grace a cela, sa affiche que si le mec est connecter, j'avais deja reussi a le faire, mais j'arive pas a faire que sa fasse un message pour dire deconnecter.

enfin, je pense qu'il faudrais que je fasse une variable pour dire que si le resultat de la requete est different de connecter affiche deconnectez, enfin vous en pensez quoi?

par Ryle » 15 janv. 2009, 21:54

Alors commençons par un petit rappel :
- foreach() est une boucle qui te permet de parcourir chacun des éléments d'un tableau. Si ton tableau contient 10 éléments, tu vas donc boucler 10 fois, une fois sur chaque élément.
- in_array() quant à elle, est une fonction qui te permet de savoir si un élément est présent dans un tableau.

Dans ton cas, $aTotalPlayers est un tableau a plusieurs dimensions (chacun des éléments de ton tableau est lui même un tableau associatif).

Le plus simple pour toi est donc de parcourir tous les éléments de ton tableau avec le foreach et de n'afficher que le mot connecté : si l'élément correspond à la chaine recherchée, tu affiches le connecté, sinon, tu ne fais rien, du coup pas besoin de "else" :
foreach( $aTotalPlayers as $aPlayer ) { 
        if ($aPlayer['Nickname'] == 'Mankar_Rodriguez') // Si Mankar_Rodriguez est une chaine, il faut la mettre entre " ou ' :)
        { 
            echo '<b style="color:green;"> connect </b>'; 
            echo '<br />'; 
            break; // quand l'utilisateur est trouvé, on arrête la boucle, c'est pas la peine de continuer :)
        } 
        // pas besoin de else pour indiquer les utilisateur non connectés
}
Le in_array() n'est pas nécessairement interessant ici, dans la mesure où pour savoir si un élément est présent dans ton tableau $aTotalPlayers, il te faut spécifier le l'élément cherché, c'est à dire le tableau associatif et pas seulement le nickname :)

de foreach a in_array comment faire?

par viskor » 15 janv. 2009, 16:50

bonjour, j'ai un petit probleme avec un script que je suis en train de modifier.

je m'explique, j'ai un serveur SA MP et j'ai telecharger le SAMP query script pour afficher la liste des connecter et j'aimerais faire en sorte que sur une page de profil utilisateur cela m'affiche si la personne joue ou pas.

malheureusement, je ne sais le faire que dans un foreach, car berzemus m'avais montrer avec "in_array" mais je n'y arrive pas, voici le code:
foreach( $aTotalPlayers as $aPlayer ) {
		if ($aPlayer['Nickname'] == Mankar_Rodriguez)
		{
			echo '<b style="color:green;"> connect </b>';
			echo '<br />';
		}
		elseif 	($aPlayer['Nickname'] != Mankar_Rodriguez)
		{
echo '<b style="color:red;"> deco </>';
		}
	}
avec cette methode, sa affiche la personne en question en tant que connecte, mais malheureusement, cela me fait un affichage ainsi:
deco deco deco deco deco deco connect
deco deco deco deco deco deco deco deco deco deco deco deco deco deco deco deco deco
quand je passe en in_array, cela m'affiche soit que le joueur est toujour connecter, ou toujour deconnectez, voici le code que j'ai pour le in_array:
	
$toutjoueur = array($aTotalPlayers);
$joueur = ($aplayer['Nickname'] == Mankar_Rodriguez);
 
	if (in_array( $joueur, $toutjoueur))
 {
	echo '<b style="color:green;"> connect </b>';
 }
 else
{
		echo '<b style="color:red;"> deco </>';
}
en bref je veu juste que sa affiche que le joueur indiquez ici (mankar rodriguez) si il es dans la liste du total player, sa affiche: connecter, et si il l'est pas, sa met: deconnecter

merci d'avance