2017-04-02 26 views
2

我正在使用PHP &我有一個多維數組,我需要搜索,以查看「鑰匙」的值是否存在,如果它確實然後獲得的值場」。這裏是我的數組:PHP搜索多維數組的值和獲取相應的元素值

Array 
(
    [0] => Array 
    (
     [key] => 31 
     [field] => CONSTRUCTN 
     [value] => LFD_CONSTRUCTION_2 
    ) 
    [1] => Array 
    (
     [key] => 32 
     [field] => COOLING 
     value] => LFD_COOLING_1 
    ) 
) 

我希望能夠搜索陣列的31「密鑰」值如果存在的話,我希望能夠提取「CONSTRUCTN的相應的「場」值」。

我使用array_search(31,$ myarray的)嘗試,但它不工作...

回答

1
function searchMultiArray($val, $array) { 
    foreach ($array as $element) { 
    if ($element['key'] == $val) { 
     return $element['field']; 
    } 
    } 
    return null; 
} 

然後:

searchMultiArray(31, $myArray); 

應返回 「CONSTRUCTN」。

+0

偉大的作品,謝謝! – LargeTuna

0

我還沒有測試,但我認爲這應該做到這一點。

function searchByKey($value, $Array){ 
    foreach ($Array as $innerArray) { 
     if ($innerArray['key'] == $value) { 
      return $innerArray['field']; 
     } 
    } 
} 

然後調用searchByKey(31, $myArray);應返回'CONSTRUCTN'。

希望有所幫助。

+1

而.....看起來我應該在發佈之前刷新頁面! @gmc已經發布了幾乎完全相同的功能。 – blackandorangecat

3

單行採用溶液array_columnarray_search功能:

$result = array_search(31, array_column($arr, 'key', 'field')); 

print_r($result); // CONSTRUCTN 

或用簡單foreach循環:

$search_key = 31; 
$result = ""; 
foreach ($arr as $item) { // $arr is your initial array 
    if ($item['key'] == $search_key) { 
     $result = $item['field']; 
     break; 
    } 
} 

print_r($result); // CONSTRUCTN 
0

你可以使用array_filter,這樣的事情,

function searchMultiDimensionalArray($array, $key, $value) { 
    $items = array_filter($array, function($item){ 
    return $item[$key] == $value; 
    }); 
    if (count($items) > 0) { 
    return $items[0]; 
    } 
    return NULL; 
} 

並使用它,就像這對任何多維數組,

$searchItem = searchMultiDimensionalArray($myArray, 'key', 31) 

if ($searchItem != NULL) { 
    $field = $searchItem['field'] 
}