ฉันรู้ว่าสิ่งนี้ได้รับคำตอบแล้ว แต่ฉันใช้สิ่งนี้และขยายเพิ่มเติมอีกเล็กน้อยในรหัสของฉันเพื่อที่คุณจะไม่ได้ค้นหาเฉพาะ uid ฉันแค่ต้องการแบ่งปันให้กับคนอื่นที่อาจจำเป็นต้องใช้ฟังก์ชั่นนั้น
นี่คือตัวอย่างของฉันและโปรดจำไว้ว่านี่เป็นคำตอบแรกของฉัน ฉันนำอาร์เรย์ param ออกมาเพราะฉันต้องการค้นหาเฉพาะอาร์เรย์ที่หนึ่งเท่านั้น แต่คุณสามารถเพิ่มเข้าไปได้อย่างง่ายดายฉันต้องการค้นหาโดยทั่วไปมากกว่าแค่ uid
นอกจากนี้ในสถานการณ์ของฉันอาจมีหลายคีย์ที่จะส่งคืนอันเป็นผลมาจากการค้นหาโดยสาขาอื่น ๆ ที่อาจไม่ซ้ำกัน
/**
* @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;
}
ต่อมาฉันก็ลงเอยด้วยการเขียนสิ่งนี้เพื่อให้ฉันสามารถค้นหาค่าและรหัสเชื่อมโยงอื่นได้ ดังนั้นตัวอย่างแรกของฉันช่วยให้คุณสามารถค้นหาค่าในคีย์การเชื่อมโยงเฉพาะใด ๆ และส่งคืนการแข่งขันทั้งหมด
ตัวอย่างที่สองนี้แสดงให้คุณเห็นว่ามีค่า ('เทย์เลอร์') ในคีย์การเชื่อมโยง (ชื่อแรก) และค่าอื่น (จริง) ที่พบในคีย์การเชื่อมโยงอื่น (ลูกจ้าง) และส่งคืนการแข่งขันทั้งหมด (คีย์ที่มีชื่อ 'Taylor' และเป็นลูกจ้าง)
/**
* @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;
}
การใช้ฟังก์ชั่น
$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);
ผลลัพธ์
Array ( [0] => 2 )