PHP在多维数组中搜索值并获取相应的元素值

aiazj4mn  于 2022-11-21  发布在  PHP
关注(0)|答案(4)|浏览(182)

我正在使用PHP &我有一个多维数组,我需要搜索它来查看“key”的值是否存在,如果存在,则获取“field”的值。

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

我希望能够在数组中搜索“key”值31。如果它存在,那么我希望能够提取相应的“field”值“CONSTRUCTN”。
我尝试过使用array_search(31,$myArray),但它不起作用...

uurity8g

uurity8g1#

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

然后道:

searchMultiArray(31, $myArray);

应返回“CONSTRUTN”。

wlsrxk51

wlsrxk512#

使用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
h22fl7wq

h22fl7wq3#

我还没测试过,但我觉得这个应该可以。

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

然后呼叫searchByKey(31, $myArray);应该会传回'CONSTRUCTN'。

5sxhfpxr

5sxhfpxr4#

一种线性解决方案:

$result = is_numeric($res = array_search(31, array_column($myArray, 'key'))) ? $myArray[$res]["field"] : "";

array_search接受两个参数,即要搜索的值和数组,随后我使用array_column提供了需要搜索的数组,array_column从要搜索的数组中获取特定列,is_numeric用于确保返回有效的键,以便相应地显示结果。

相关问题