PHP搜索多维数组的价值和&获取相应的元素值

时间:2017-04-02 20:35:29

标签: php arrays multidimensional-array

我正在使用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),但它不起作用......

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

然后:

searchMultiArray(31, $myArray);

应该返回" CONSTRUCTN"。

答案 2 :(得分:0)

我没有测试过,但我认为应该这样做。

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

然后调用searchByKey(31, $myArray);应该返回'CONSTRUCTN'。

希望有所帮助。

答案 3 :(得分: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']
}