124 votes

Comment vérifier si une valeur de tableau existe ?

Comment puis-je vérifier si $something['say'] a la valeur de 'bla' ou 'omg' ?

$something = array('say' => 'bla', 'say' => 'omg');

51 votes

Les clés d'un tableau doivent être uniques.

334voto

Benjamin Ortuzar Points 3585

Vous pouvez utiliser la méthode PHP dans_réseau fonction

if( in_array( "bla" ,$yourarray ) )
{
    echo "has bla";
}

7 votes

Est-il possible d'avoir un tableau avec des clés identiques ? La deuxième valeur ne risque-t-elle pas d'écraser l'originale ?

127voto

Tatu Ulmanen Points 52098

Utilisation de l'instruction if ?

if(isset($something['say']) && $something['say'] === 'bla') {
    // do something
}

Au fait, vous attribuez une valeur avec la clé say deux fois, donc votre tableau résultera en un tableau avec une seule valeur.

55voto

Neeraj Singh Points 1478

Utilisation : in_array()

$search_array = array('user_from','lucky_draw_id','prize_id');

if (in_array('prize_id', $search_array)) {
    echo "The 'prize_id' element is in the array";
}

Voici le résultat : The 'prize_id' element is in the array


Utilisation : array_key_exists()

$search_array = array('user_from','lucky_draw_id','prize_id');

if (array_key_exists('prize_id', $search_array)) {
    echo "The 'prize_id' element is in the array";
}

Aucune sortie


En conclusion, array_key_exists() ne fonctionne pas avec un simple tableau. Il permet seulement de savoir si une clé de tableau existe ou non. Utilisez in_array() à la place.

Voici un autre exemple :

<?php
/**++++++++++++++++++++++++++++++++++++++++++++++
 * 1. example with assoc array using in_array
 *
 * IMPORTANT NOTE: in_array is case-sensitive
 * in_array — Checks if a value exists in an array
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if (in_array('omg', $something)) {
    echo "|1| The 'omg' value found in the assoc array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 2. example with index array using in_array
 *
 * IMPORTANT NOTE: in_array is case-sensitive
 * in_array — Checks if a value exists in an array
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('bla', 'omg');
if (in_array('omg', $something)) {
    echo "|2| The 'omg' value found in the index array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 3. trying with array_search
 *
 * array_search — Searches the array for a given value 
 * and returns the corresponding key if successful
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if (array_search('bla', $something)) {
    echo "|3| The 'bla' value found in the assoc array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 4. trying with isset (fastest ever)
 *
 * isset — Determine if a variable is set and 
 * is not NULL
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if($something['a']=='bla'){
    echo "|4| Yeah!! 'bla' found in array ||";
}

/**
 * OUTPUT:
 * |1| The 'omg' element value found in the assoc array ||
 * |2| The 'omg' element value found in the index array ||
 * |3| The 'bla' element value found in the assoc array ||
 * |4| Yeah!! 'bla' found in array ||
 */
?>

Voici PHP DEMO

0 votes

array_key_exists() vérifie les clés des tableaux tandis que la dernière $search_array contient un tableau associatif. Il est certain que cela ne fonctionnera pas. Vous devriez array_flip() le premier.

6voto

echo Points 3650

Pour vérifier si l'index est défini : isset($something['say'])

0 votes

Je ne comprends pas l'intention de cette réponse. Comment atteindre l'objectif de vérifier la valeur d'un indice ?

0 votes

Bonne question. Cela ne répond pas du tout à la question, telle qu'elle est écrite. Je ne me souviens pas, mais comme j'ai répondu environ 3 minutes après que la question ait été posée à l'origine, je suppose que le PO a édité sa question originale pour la rendre plus claire, dans la limite de l'édition initiale avant qu'elle ne soit enregistrée comme une édition. Si cela a un sens.

5voto

VolkerK Points 54118

Vous pouvez tester si un tableau a un certain élément ou non avec isset() ou parfois mieux encore array_key_exists() (la documentation explique les différences). Si vous n'êtes pas sûr que le tableau possède un élément avec l'index 'say', vous devez d'abord le tester, sinon vous risquez d'obtenir des messages 'warning : undefined index....'.

Pour vérifier si la valeur de l'élément est égale à une chaîne de caractères, vous pouvez utiliser == ou (parfois mieux) l'opérateur d'identité. \=== qui ne permet pas jonglerie de type .

if( isset($something['say']) && 'bla'===$something['say'] ) {
  // ...
}

0 votes

Array_key_exists est toujours une meilleure solution

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X