Est-il possible d'avoir un tableau avec des clés identiques? La deuxième valeur n'écraserait-elle pas l'original?
Citricguy
47
En utilisant: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
En utilisant: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 simple tableau. Il ne s'agit que de savoir si une clé de tableau existe ou non. Utilisez in_array()plutôt.
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 ||
*/?>
array_key_exists()vérifie les clés du tableau tandis que ce dernier $search_arraycontient un tableau associatif. Nul doute que cela ne fonctionnera pas. Vous devriez le array_flip()faire en premier.
Je ne comprends pas l'intention de cette réponse. Comment atteindre l'objectif de vérification de la valeur d'un indice?
Brad Koch
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 la question initiale, je suppose que l'OP a modifié sa question originale pour la rendre plus claire, dans le délai de vérification initial avant qu'elle ne soit enregistrée en tant que modification. Si cela a du sens.
écho
5
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 a un élément avec l'index «say», vous devriez d'abord le tester ou vous pourriez recevoir des messages «warning: undefined index ....».
Quant au test pour savoir si la valeur de l'élément est égale à une chaîne, vous pouvez utiliser == ou (encore une fois parfois mieux) l'opérateur d'identité === qui ne permet pas de jongler avec les types .
array_key_exists est toujours une meilleure solution
AjayR
5
in_array () convient 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';}
Une meilleure réponse contient généralement une explication en plus du code. Je pense que cela améliorera votre réponse!
amit
1
Eh bien, tout d'abord, un tableau associatif ne peut avoir une clé définie qu'une seule fois, donc ce tableau n'existerait jamais. Sinon, utilisez simplement in_array()pour déterminer si cet élément de tableau spécifique est dans un tableau de solutions possibles.
Réponses:
Utilisation
if
?Btw, vous attribuez une valeur avec la clé
say
deux fois, donc votre tableau donnera un tableau avec une seule valeur.la source
Vous pouvez utiliser la fonction PHP in_array
la source
En utilisant:
in_array()
Voici la sortie:
The 'prize_id' element is in the array
En utilisant:
array_key_exists()
Pas de sortie
En conclusion,
array_key_exists()
ne fonctionne pas avec un simple tableau. Il ne s'agit que de savoir si une clé de tableau existe ou non. Utilisezin_array()
plutôt.Voici un autre exemple:
Voici
PHP DEMO
la source
array_key_exists()
vérifie les clés du tableau tandis que ce dernier$search_array
contient un tableau associatif. Nul doute que cela ne fonctionnera pas. Vous devriez learray_flip()
faire en premier.Vous pouvez utiliser:
array_search()
in_array()
array_flip()
etarray_key_exists()
la source
Pour vérifier si l'index est défini:
isset($something['say'])
la source
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 a un élément avec l'index «say», vous devriez d'abord le tester ou vous pourriez recevoir des messages «warning: undefined index ....».
Quant au test pour savoir si la valeur de l'élément est égale à une chaîne, vous pouvez utiliser == ou (encore une fois parfois mieux) l'opérateur d'identité === qui ne permet pas de jongler avec les types .
la source
in_array () convient 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.
Cela affichera "La clé est 1"
la source
Utilisez simplement la fonction PHP
array_key_exists()
la source
la source
Eh bien, tout d'abord, un tableau associatif ne peut avoir une clé définie qu'une seule fois, donc ce tableau n'existerait jamais. Sinon, utilisez simplement
in_array()
pour déterminer si cet élément de tableau spécifique est dans un tableau de solutions possibles.la source
Une autre utilisation de in_array in_array () avec un tableau comme aiguille
la source
. c'est à dire
Vous pouvez utiliser cette fonction
Usage:
la source