2017-04-02 22 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'] 
}