Bu zaten cevaplanmış olduğunu biliyorum, ama bunu kullandım ve sadece uid tarafından arama yoktu böylece benim kod biraz daha genişletti. Sadece bu işlevselliğe ihtiyaç duyan herkes için paylaşmak istiyorum.
İşte benim örneğim ve lütfen bu ilk cevabım olduğunu unutmayın. Ben sadece belirli bir dizi aramak gerekiyordu çünkü param dizi çıkardı, ama kolayca ekleyebilirsiniz. Ben aslında sadece uid daha fazla aramak istedim.
Ayrıca, benim durumumda, benzersiz olmayan diğer alanlara göre arama sonucunda geri dönmek için birden fazla anahtar olabilir.
/**
* @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;
}
Daha sonra, başka bir değer ve ilişkisel anahtar aramama izin vermek için bunu yazdım. İlk örneğim, herhangi bir ilişkilendirilebilir anahtarda bir değer aramanıza ve tüm eşleşmeleri döndürmenize izin verir.
Bu ikinci örnek, belirli bir ilişkilendirilebilir anahtarda (ad_adı) bir değerin ('Taylor') nerede bulunduğunu ve başka bir ilişkilendirilebilir anahtarda (kullanılmış) başka bir değer (true) bulunduğunu gösterir ve tüm eşleşmeleri döndürür (Adları olan kişilerin bulunduğu anahtarlar) 'Taylor' AND kullanılır).
/**
* @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;
}
İşlev kullanımı
$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);
Sonuç
Array ( [0] => 2 )