Array_key_exists en array multidimensional php
PHP array_key_exists() es una función incorporada que comprueba el array para una clave en particular, devuelve un valor verdadero si la clave existe, y devuelve uno falso si la clave no existe. Si se omite la clave cuando se define un array, la clave entera se genera como un índice, empezando por 0 y aumentando en 1 para cada valor.
La forma en que la función array_key_exists() maneja las claves null, float, bool, y ‘cadena de representación de enteros’ es inconsistente en el caso de boolean y float, con la forma en que éstas son convertidas cuando se usan como offset de un array.
Puede utilizar la construcción del lenguaje isset o la función array_key_exists. El isset debería ser un poco más rápido (ya que no es una función) pero devolverá false si un elemento existe y tiene un valor NULL.
Array_key_exists en php
También podemos comprobar si una clave existe dentro del array dado utilizando la función isset() incorporada en PHP. Esta función comprueba si una variable está establecida o no, lo que significa que la variable debe ser declarada, y el valor de la variable no debe ser nulo.
En esta lección, hemos aprendido cómo comprobar si una clave existe dentro del array o no. PHP ofrece varias funciones incorporadas para comprobar si la clave existe dentro del array o no. En primer lugar, hemos utilizado la función array_key_exists() para comprobar si la clave especificada existe dentro del array o no. Después, hemos utilizado la función isset() para comprobar lo mismo. La función isset() no devuelve true si el valor de la clave especificada es null mientras que la función array_key_exists() devuelve true.
Array_key_exists obsoleto
En algún momento me enteré de que había una función array_key_exists(), pero para entonces escribir isset() ya era memoria muscular. Nunca me molesté con array_key_exists() hasta hace poco, cuando me encontré con una situación en la que realmente la necesitaba. Quería construir un servicio REST con el siguiente comportamiento PUT (editar/actualizar):
En fin, volvamos a isset() y array_key_exists(). A pesar de su nombre, isset() realmente comprueba si el argumento está establecido y no es nulo. Así que si tienes un array con una clave cuyo valor es nulo, llamar a isset() sobre esa clave devolverá false.
En mi servicio, no podía distinguir la diferencia entre el segundo y el tercer caso de uso – el cliente que establece una clave como nula frente a la omisión de la clave por completo. La solución fue utilizar array_key_exists() que sólo comprueba si el array tiene la clave.
Esta mañana me encontré con una entrada en un blog que hablaba del rendimiento de isset() frente a array_key_exists(). (La conclusión es que isset() es en realidad más rápida que array_key_exists() porque isset() es en realidad una construcción del lenguaje, no una función, por lo que no incurre en la sobrecarga de llamadas a funciones. Pero ambos son bastante rápidos, así que probablemente no deberías elegir uno sobre el otro por razones de rendimiento.
Clave en javascript
porque isset() acepta VARIABLES como parámetros, pero en este caso, $foo->bar no es una VARIABLE. es un VALOR devuelto por el método __get() de la clase Foo. por lo tanto la expreesión isset($foo->bar) siempre será igual a ‘false’.
Si considera que isset() indica si la variable dada tiene un valor o no, y recuerda que NULL pretende indicar que un valor está _ausente_ (como se dice, algo torpemente, en su página de manual), entonces su comportamiento no es para nada inconsistente o confuso. Hay otras formas en las que una variable puede no tener un valor (por ejemplo, se supone que debe contener el valor devuelto por una llamada a una función, pero la función no tiene un valor que devolver) en las que la desinicialización de la variable no sería una opción ni tendría sentido (por ejemplo, dependiendo de lo que se vaya a hacer con el valor devuelto).
Nota: Dado que se trata de una construcción del lenguaje y no de una función, no puede llamarse mediante funciones de variables.Por eso está en “Funciones de manejo de variables”. Tal vez debería haber un buen campo de documentación para las construcciones de lenguaje.