web-dev-qa-db-fra.com

Comment vérifier si une valeur de tableau existe?

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

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

Utiliser if?

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

Btw, vous attribuez une valeur avec la clé say deux fois, votre tableau donnera donc un tableau avec une seule valeur.

97
Tatu Ulmanen

Vous pouvez utiliser la fonction PHP in_array

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

Utilisation de: 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 la sortie: _The 'prize_id' element is in the array_


Utilisation de: 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";
}
_

Pas de sortie


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

Voici d'autres exemples:

_<?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

40
Neeraj Singh

Vous pouvez utiliser:

7
Jasir

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

6
echo

Vous pouvez tester si un tableau a un certain élément ou pas avec isset () ou parfois même mieux array_key_exists () (la documentation explique les différences). Si vous ne pouvez pas être sûr que le tableau comporte un élément avec l'index "dites", vous devez d'abord le tester ou vous pouvez obtenir le message "avertissement: index non défini ....".

En ce qui concerne le test pour savoir si la valeur de l'élément est égale à une chaîne, vous pouvez utiliser == ou (encore mieux parfois) l'opérateur d'identité === qui ne permet pas type jonglerie =.

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

in_array () est correct si vous ne faites que vérifier, mais si vous devez vérifier qu’une valeur existe et renvoyer la clé associée, array_search est une meilleure option.

$data = [
    'hello',
    'world'
];

$key = array_search('world', $data);

if ($key) {
    echo 'Key is ' . $key;
} else {
    echo 'Key not found';
}

Cela affichera "La clé est 1"

5
Tom Jowitt
<?php
if (in_array('your_variable', $Your_array)) {
    $redImg = 'true code here';
} else {
    $redImg = 'false code here';
} 
?>
3
Vishnu Sharma

Utilisez simplement la fonction PHP _ array_key_exists()

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>
2
Xman Classical

En supposant que vous utilisez un tableau simple

. c'est à dire.

$MyArray = array("red","blue","green");

Vous pouvez utiliser cette fonction

function val_in_arr($val,$arr){
  foreach($arr as $arr_val){
    if($arr_val == $val){
      return true;
    }
  }
  return false;
}

Usage:

val_in_arr("red",$MyArray); //returns true
val_in_arr("brown",$MyArray); //returns false
1
Kareem

D'abord, un tableau associatif ne peut avoir une clé définie qu'une seule fois, ce tableau n'existerait donc jamais. Sinon, utilisez simplement in_array() pour déterminer si cet élément de tableau spécifique fait partie d'un tableau de solutions possibles.

1
animuson
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

Autre utilisation de in_arrayin_array () avec un tableau à l'aiguille

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found\n";
}

if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found\n";
}

if (in_array('o', $a)) {
    echo "'o' was found\n";
}
?>
1
Ahmad Sayeed