Búsqueda de matrices multidimensionales en PHP por valor
Tengo un array en el que quiero buscar el uid
y obtener la clave del array.
Ejemplos
Supongamos que tenemos el siguiente array de 2 dimensiones:
$userdb = array(
array(
'uid' => '100',
'name' => 'Sandra Shush',
'pic_square' => 'urlof100'
),
array(
'uid' => '5465',
'name' => 'Stefanie Mcmohn',
'pic_square' => 'urlof100'
),
array(
'uid' => '40489',
'name' => 'Michael',
'pic_square' => 'urlof40489'
)
);
La llamada a la función search_by_uid(100)
(uid del primer usuario) debería devolver 0
.
La llamada a la función search_by_uid(40489)
debería devolver 2
.
He intentado hacer bucles, pero quiero un código de ejecución más rápido.
291
3
Esto funcionará. Deberías llamarlo así:
Es importante saber que si estás usando el operador
===
los tipos comparados tienen que ser exactamente iguales, en este ejemplo tienes que buscarstring
o simplemente usar==
en lugar de===
.Basado en la respuesta de angoru. En versiones posteriores de PHP (
>= 5.5.0
) puedes usar one-liner.Aquí está la documentación: http://php.net/manual/en/function.array-column.php.
Partiendo de la excelente respuesta de Jakub's, aquí hay una búsqueda más generalizada que permitirá especificar la clave (no sólo para el uid):
Uso:
$results = searcharray('searchvalue', searchkey, $array);
Sé que esto ya fue respondido, pero yo utilicé esto y lo extendí un poco más en mi código para que no tuviera que buscar sólo por el uid. Sólo quiero compartirlo para cualquier otra persona que pueda necesitar esa funcionalidad.
Aquí'está mi ejemplo y por favor tenga en cuenta que esta es mi primera respuesta. He quitado la matriz de parámetros porque sólo necesitaba buscar en una matriz específica, pero se podría añadir fácilmente. Quería buscar esencialmente por algo más que el uid.
Además, en mi situación puede haber múltiples claves a devolver como resultado de la búsqueda por otros campos que pueden no ser únicos.
Más tarde, terminé escribiendo esto para permitirme buscar otro valor y clave asociativa. Así que mi primer ejemplo permite buscar un valor en cualquier clave asociativa específica, y devolver todas las coincidencias.
Este segundo ejemplo muestra dónde se encuentra un valor ('Taylor') en una determinada clave asociativa (nombre) Y otro valor (verdadero) en otra clave asociativa (empleado), y devuelve todas las coincidencias (Claves donde las personas con nombre 'Taylor' Y están empleadas).
Uso de la función
**Resultado.