Ich weiß, dass dies bereits beantwortet wurde, aber ich habe dies verwendet und es in meinem Code ein wenig erweitert, sodass Sie nicht nur nach der UID suchen mussten. Ich möchte es nur für alle anderen freigeben, die diese Funktionalität benötigen.
Hier ist mein Beispiel und bitte denken Sie daran, dass dies meine erste Antwort ist. Ich habe das Parameter-Array herausgenommen, weil ich nur ein bestimmtes Array durchsuchen musste, aber Sie konnten es leicht hinzufügen. Ich wollte im Wesentlichen nach mehr als nur der UID suchen.
In meiner Situation müssen möglicherweise mehrere Schlüssel zurückgegeben werden, wenn nach anderen Feldern gesucht wird, die möglicherweise nicht eindeutig sind.
/**
* @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;
}
Später schrieb ich dies, um nach einem anderen Wert und einem anderen assoziativen Schlüssel suchen zu können. In meinem ersten Beispiel können Sie also nach einem Wert in einem bestimmten assoziativen Schlüssel suchen und alle Übereinstimmungen zurückgeben.
Dieses zweite Beispiel zeigt Ihnen, wo ein Wert ('Taylor') in einem bestimmten assoziativen Schlüssel (Vorname) UND ein anderer Wert (true) in einem anderen assoziativen Schlüssel (verwendet) gefunden wird, und gibt alle Übereinstimmungen zurück (Schlüssel, bei denen Personen mit Vornamen 'Taylor' UND sind angestellt).
/**
* @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;
}
Funktionsnutzung
$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);
Ergebnis
Array ( [0] => 2 )