Wiem, że już na nie odpowiedziano, ale użyłem tego i rozszerzyłem go trochę w moim kodzie, abyś nie szukał tylko identyfikatora użytkownika. Chcę go tylko udostępnić każdemu, kto może potrzebować tej funkcji.
Oto mój przykład i proszę pamiętać, że to moja pierwsza odpowiedź. Wyjąłem tablicę parametrów, ponieważ musiałem przeszukać tylko jedną konkretną tablicę, ale można ją łatwo dodać. Chciałem zasadniczo wyszukać coś więcej niż tylko identyfikator użytkownika.
Ponadto w mojej sytuacji może być wiele kluczy do zwrócenia w wyniku wyszukiwania według innych pól, które mogą nie być unikalne.
/**
* @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;
}
Później skończyłem pisać to, aby pozwolić mi szukać innej wartości i klucza asocjacyjnego. Tak więc mój pierwszy przykład pozwala wyszukać wartość w dowolnym kluczu asocjacyjnym i zwrócić wszystkie dopasowania.
Ten drugi przykład pokazuje, gdzie wartość („Taylor”) znajduje się w pewnym kluczu asocjacyjnym (imię), ORAZ inną wartość (true) znajduje się w innym kluczu asocjacyjnym (zatrudniony), i zwraca wszystkie dopasowania (klucze, w których ludzie o imieniu „Taylor” AND jest zatrudniony).
/**
* @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;
}
Zastosowanie funkcji
$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);
Wynik
Array ( [0] => 2 )