Page 1 sur 2

Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 05:01
par rimie1
Bonjour,

Comment puis je chercher si le mot autocomplete est dans formOptionsArray, de meme pour on et off:
$formOptionsArray = array("autocomplete" => array('on', 'off'));

Merci

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 07:53
par xTG
if( array_key_exists("autocomplete", $formOptionsArray) === true )
{
  echo "autocomplete présent";
  if( array_seach("on",$formOptionsArray['autocomplete']) === true )
    echo "on présent";
  if( array_seach("off",$formOptionsArray['autocomplete']) === true )
    echo "off présent";
}

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 11:02
par popy
Ou sinon :
$autocompleteActivated =  isset($formOptionsArray['autocomplete']) && $formOptionsArray['autocomplete'] == 'on';

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 11:55
par Mazarini
Bonjour,

Pour le stockage des infos, je préfère la solution dans le genre :
$formOptionsArray['autocomplete']['on'] = '';
$formOptionsArray['autocomplete']['off'] = '';
(pas sur de la syntaxe pour les tableaux à 2 dimensions)

Cela permet un test facile avec isset($formOptionsArray['autocomplete']['on'])

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 11:57
par popy
T'aime les trucs compliqués toi non ?

Tant qu'a changer les données, pourquoi pas $formOptionsArray['autocomplete'] = true / false ?

Comme ça, c'est juste :
if ($formOptionsArray['autocomplete']) {
[...]
}
Ou encore :
if (isset($formOptionsArray['autocomplete']) && $formOptionsArray['autocomplete']) {
[...]
}

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 12:08
par Mazarini
Bonjour,

C'est une habitude que j'ai prise de mettre une donnée dans la clé d'un tableau lorsque la clé naturelle n'a pas d'importance. Cela permet un test rapide et simple d'existence et garantie l'unicité sans effort.

J'utilise ca pour des listes de fichiers css ou javascript ou des listes de mots clés. Pour le parcours, je fais un foreach ($tab as $valeur=>$bidon) au lieu du foreach ($tab as $valeur)

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 13:37
par xTG
Je fais aussi comme Mazarini, c'est bien plus rapide qu'une recherche via in_array() ou autre.

Quant à ce que tu proposes popy le souci est que c'est un array de configuration qu'utilise l'auteur de ce topic. Ce n'est pas un array de présentation des données.
En gros une liste des valeurs que peut prendre l'option.

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 14:53
par popy
Sauf que la, il n'y a aucun in_array...

Re: Chercher dans les parametres d'un tableau

Posté : 04 mai 2011, 15:03
par Mazarini
Mais un array_search

Au passage, j'ai un doute sur array_search() === true car array_search() retourne un indice. Ne serai ce pas plutôt array_search() !== false ?

Re: Chercher dans les parametres d'un tableau

Posté : 05 mai 2011, 04:13
par rimie1
avec multitudes reponses, je ne sais pas laquelle est bonne pour mon cas, ici j'ajoute d'autres options:
$formOptionsArray = array(
		"autocomplete" => array('on', 'off'), 
		"target" => array('_self', '_blank', '_parent', '_top'), 
		"novalidate" => "novalidate",
		"DISABLED"
		);

Re: Chercher dans les parametres d'un tableau

Posté : 05 mai 2011, 04:48
par Genova
Ou sinon :
$autocompleteActivated =  isset($formOptionsArray['autocomplete']) && $formOptionsArray['autocomplete'] == 'on';
Je rebondi sur ce message pour préciser que le coup du isset() sur les clefs de tableau est une mauvaise habitude qui peut dans certains cas causer des problèmes pénibles, en effet pour peu que la valeur associée à cette clef soit nulle, isset() retournera false. Mieux vaut donc utiliser array_key_exists() qui est LA fonction faîte pour tester l'existence d'une clef dans un tableau :)

Petit test :
$a = array('titi' => 1, 'toto' => null);
var_dump(isset($a['titi']), isset($a['toto']));
affiche

Code : Tout sélectionner

bool(true) bool(false)

Re: Chercher dans les parametres d'un tableau

Posté : 05 mai 2011, 05:16
par rimie1
Oui Genova, vous avez raison, je l'ai lu au manuel:
Example #2 array_key_exists() vs isset()
isset() does not return TRUE for array keys that correspond to a NULL value, while array_key_exists() does.

Re: Chercher dans les parametres d'un tableau

Posté : 05 mai 2011, 08:00
par xTG
@Genova : c'est pour cela que je n'utilise la valeur null qu'en cas de variable non initialisé dans tous mes programmes. Ainsi le résultat du isSet() est tout à fait correct. Je tombe sur une variable non initialisée qui n'existe donc pas.

Re: Chercher dans les parametres d'un tableau

Posté : 05 mai 2011, 08:14
par Mazarini
Bonjour,

Si tu ne sais que choisir, une adaptation de la première solution me semble bonne :
function test($nom,$option)
{
   global $formOptionsArray;
   if( array_key_exists($nom, $formOptionsArray) === true )
  {
     if( array_seach($option,$formOptionsArray[$nom]) === true )
     {
         return true;
     }
  }
  return false;
}
Ceci en gardant ta structure de données.

Re: Chercher dans les parametres d'un tableau

Posté : 06 mai 2011, 04:23
par rimie1
j'ai teste l'exemple de xTG et ca marche pas, il affiche:

+ autocomplete present,
+ on n'est pas present.
if( array_key_exists("autocomplete", $formOptionsArray) === true )
{
  echo "autocomplete présent<br>";
  if(array_search("on",$formOptionsArray['autocomplete']) === true )
  {
  	echo "on présent<br>";
  }
  else
  {
  	echo "n'est pas présent<br>";
  }
    
  if( array_search("off",$formOptionsArray['autocomplete']) === true )
    echo "off présent<br>";
}