简体   繁体   English

PHP-获取关联数组的键

[英]PHP - Get key of Associative Array

I have an array 我有一个数组

Array(
[32] => ki
[97] => Array
    (
        [0] => l$
        [1] => ml
        [2] => 8e
    )
[98] => fp
[99] => @w
[100] => lf 
)

if I do array search for example: 如果我做数组搜索例如:

echo array_search("fp", $array);

the output will be "98". 输出将为“ 98”。 How can I get the key if im looking for a value inside another array like "ml"? 如果即时通讯正在另一个数组(例如“ ml”)中寻找值,该如何获取密钥? I wanted to get "97" if i search for value "ml". 如果我搜索值“ ml”,我想得到“ 97”。

I don't think there is such function for multi arrays 我认为多数组没有这种功能

If you want to do it in a loop try: 如果要循环执行,请尝试:

foreach($array as $key => $value)
{
    if(is_array($value))
    {
        $subarray = $value;

        foreach($subarray as $subvalue)
        {
            if($subvalue == 'ml')
            {
                echo $key;
                break 2;
            }
        }
    }
    else
    {
        if($value == 'ml')
        {
            echo $key;
            break;
        }
    }
}

You could write an alternate recursive array_search function like this: 您可以编写一个替代的递归array_search函数,如下所示:

function recursive_array_search($needle, $haystack, $parent_key = null) {
    foreach($haystack as $key => $value) {
        $current_key = $parent_key ? $parent_key : $key;
        if($needle === $value || (is_array($value) && recursive_array_search($needle, $value, $current_key) !== false)) {
            return $current_key;
        }
    }
    return false;
}

And call it like echo recursive_array_search("ml", $array); 并像echo recursive_array_search("ml", $array);一样echo recursive_array_search("ml", $array);

Based on http://php.net/manual/en/function.array-search.php#91365 基于http://php.net/manual/en/function.array-search.php#91365

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM