¿Es posible tener una matriz con claves idénticas? ¿El segundo valor no sobrescribirá el original?
Citricguy
47
Utilizando: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";}
Aquí está la salida:The 'prize_id' element is in the array
Utilizando: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";}
Ninguna salida
En conclusión, array_key_exists()no funciona con una matriz simple. Es solo para averiguar si existe una clave de matriz o no. Úselo en su in_array()lugar.
Aquí hay más ejemplo:
<?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()comprueba las claves de la matriz, mientras que la última $search_arraycontiene una matriz asociativa. Sin duda no funcionará. Deberías array_flip()hacerlo primero.
No entiendo la intención de esta respuesta. ¿Cómo se logra el objetivo de verificar el valor de un índice?
Brad Koch
Buena pregunta. Esto no responde la pregunta en absoluto, como está escrito. No lo recuerdo, pero como respondí unos 3 minutos después de que se hizo la pregunta originalmente, supongo que el OP editó su pregunta original para dejarla más clara, dentro del límite de edición inicial antes de que se registre como una edición. Si eso tiene algún sentido.
echo el
5
Puede probar si una matriz tiene un determinado elemento o no con isset () o, a veces, incluso mejor array_key_exists () (la documentación explica las diferencias). Si no puede estar seguro de si la matriz tiene un elemento con el índice 'decir', debe probarlo primero o puede recibir mensajes de 'advertencia: índice indefinido ...'.
En cuanto a la prueba de si el valor del elemento es igual a una cadena, puede usar == o (de nuevo a veces mejor) el operador de identidad === que no permite el malabarismo de tipos .
in_array () está bien si solo está comprobando, pero si necesita comprobar que existe un valor y devolver la clave asociada, array_search es una mejor opción.
$data =['hello','world'];
$key = array_search('world', $data);if($key){
echo 'Key is '. $key;}else{
echo 'Key not found';}
Una mejor respuesta suele contener una explicación además del código. ¡Creo que hacerlo mejorará tu respuesta!
amit
1
Bueno, en primer lugar, una matriz asociativa solo puede tener una clave definida una vez, por lo que esta matriz nunca existiría. De lo contrario, utilice in_array()para determinar si ese elemento de matriz específico está en una matriz de posibles soluciones.
Respuestas:
Usando
if
?Por cierto, está asignando un valor con la clave
say
dos veces, por lo tanto, su matriz dará como resultado una matriz con solo un valor.fuente
Puede usar la función PHP in_array
fuente
Utilizando:
in_array()
Aquí está la salida:
The 'prize_id' element is in the array
Utilizando:
array_key_exists()
Ninguna salida
En conclusión,
array_key_exists()
no funciona con una matriz simple. Es solo para averiguar si existe una clave de matriz o no. Úselo en suin_array()
lugar.Aquí hay más ejemplo:
Aquí está
PHP DEMO
fuente
array_key_exists()
comprueba las claves de la matriz, mientras que la última$search_array
contiene una matriz asociativa. Sin duda no funcionará. Deberíasarray_flip()
hacerlo primero.Puedes usar:
array_search()
in_array()
array_flip()
yarray_key_exists()
fuente
Para comprobar si el índice está definido:
isset($something['say'])
fuente
Puede probar si una matriz tiene un determinado elemento o no con isset () o, a veces, incluso mejor array_key_exists () (la documentación explica las diferencias). Si no puede estar seguro de si la matriz tiene un elemento con el índice 'decir', debe probarlo primero o puede recibir mensajes de 'advertencia: índice indefinido ...'.
En cuanto a la prueba de si el valor del elemento es igual a una cadena, puede usar == o (de nuevo a veces mejor) el operador de identidad === que no permite el malabarismo de tipos .
fuente
in_array () está bien si solo está comprobando, pero si necesita comprobar que existe un valor y devolver la clave asociada, array_search es una mejor opción.
Esto imprimirá "La clave es 1"
fuente
Solo usa la función PHP
array_key_exists()
fuente
fuente
Bueno, en primer lugar, una matriz asociativa solo puede tener una clave definida una vez, por lo que esta matriz nunca existiría. De lo contrario, utilice
in_array()
para determinar si ese elemento de matriz específico está en una matriz de posibles soluciones.fuente
Otro uso de in_array in_array () con una matriz como aguja
fuente
. es decir
Puedes usar esta función
Uso:
fuente