PHP - 如果 key 存在于多维关联数组中,return 它的位置

PHP - If key exists in a multidimensional associative array, return its position

我有一个多维关联数组。顶级键是数字,里面的关联数组有键和值的字符串。

这是数组转储的示例:

Array
(
    [1] => Array
        (
            [AC21T12-M01] => 54318
        )

    [2] => Array
        (
            [AC03T11-F01] => 54480
        )

)

所以我想搜索'AC03T11-F01'和return2作为关键位置

我尝试了 array_search('AC03T11-F01', $array); 但它没有 return 任何东西所以我猜它并不像我想的那样简单。

我在搜索值时使用了下面的函数来键入键位置,所以也许它也可以适用于搜索键?

function getParentStack($child, $stack) {
    foreach ($stack as $k => $v) {
        if (is_array($v)) {
            // If the current element of the array is an array, recurse it and capture the return
            $return = getParentStack($child, $v);

            // If the return is an array, stack it and return it
            if (is_array($return)) {
                //return array($k => $return);
                return $k;
            }
        } else {
            // Since we are not on an array, compare directly
            if ($v == $child) {
                // And if we match, stack it and return it
                return array($k => $child);
            }
        }
    }

    // Return false since there was nothing found
    return false;
}
$search = 'AC03T11-F01';
$found =  false;

foreach($array as $key => $value) {
    if(isset($value[$search])) {
        $found = $key;
        break;
    }
}

现在检查 $found

您可以过滤数组然后请求键:

$filtered = array_filter($array, function(item) {
  return item === 'AC03T11-F01'
});

var_dump( array_keys( $filtered ) );
//⇒ [ 2 ]

是否要取回第一次出现的key:

$keys = array_keys( array_filter($array, function(item) {
  return item === 'AC03T11-F01'
}));
echo ($key = count( $keys ) > 0 ? $keys[0] : null);
//⇒ 2