Sé que esto ya fue respondido, pero lo usé y lo extendí un poco más en mi código para que no tuviera que buscar solo el uid. Solo quiero compartirlo con cualquier otra persona que pueda necesitar esa funcionalidad.
Aquí está mi ejemplo y tenga en cuenta que esta es mi primera respuesta. Saqué la matriz param porque solo necesitaba buscar una matriz específica, pero podía agregarla fácilmente. Quería buscar esencialmente más que solo el uid.
Además, en mi situación, puede haber varias claves para devolver como resultado de la búsqueda por otros campos que pueden no ser únicos.
/**
* @param array multidimensional
* @param string value to search for, ie a specific field name like name_first
* @param string associative key to find it in, ie field_name
*
* @return array keys.
*/
function search_revisions($dataArray, $search_value, $key_to_search) {
// This function will search the revisions for a certain value
// related to the associative key you are looking for.
$keys = array();
foreach ($dataArray as $key => $cur_value) {
if ($cur_value[$key_to_search] == $search_value) {
$keys[] = $key;
}
}
return $keys;
}
Más tarde, terminé escribiendo esto para permitirme buscar otro valor y clave asociativa. Entonces, mi primer ejemplo le 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_nombre) Y otro valor (verdadero) se encuentra en otra clave asociativa (empleada), y devuelve todas las coincidencias (Claves donde las personas con nombre 'Taylor' Y son empleados).
/**
* @param array multidimensional
* @param string $search_value The value to search for, ie a specific 'Taylor'
* @param string $key_to_search The associative key to find it in, ie first_name
* @param string $other_matching_key The associative key to find in the matches for employed
* @param string $other_matching_value The value to find in that matching associative key, ie true
*
* @return array keys, ie all the people with the first name 'Taylor' that are employed.
*/
function search_revisions($dataArray, $search_value, $key_to_search, $other_matching_value = null, $other_matching_key = null) {
// This function will search the revisions for a certain value
// related to the associative key you are looking for.
$keys = array();
foreach ($dataArray as $key => $cur_value) {
if ($cur_value[$key_to_search] == $search_value) {
if (isset($other_matching_key) && isset($other_matching_value)) {
if ($cur_value[$other_matching_key] == $other_matching_value) {
$keys[] = $key;
}
} else {
// I must keep in mind that some searches may have multiple
// matches and others would not, so leave it open with no continues.
$keys[] = $key;
}
}
}
return $keys;
}
Uso de la función
$data = array(
array(
'cust_group' => 6,
'price' => 13.21,
'price_qty' => 5
),
array(
'cust_group' => 8,
'price' => 15.25,
'price_qty' => 4
),
array(
'cust_group' => 8,
'price' => 12.75,
'price_qty' => 10
)
);
$findKey = search_revisions($data,'8', 'cust_group', '10', 'price_qty');
print_r($findKey);
Resultado
Array ( [0] => 2 )