簡體   English   中英

php,檢查是否存在密鑰,但它可以是多個密鑰

[英]php, check if a key exists, but it can be multiple keys

如何檢查數組中是否存在密鑰,但它可以是多個密鑰? 我的意思是:

$a['b'] = 'Im exists!';
var_dump (isset($a['b']));

但我的情況很復雜:

$a['c'] = 'c';
$a['xxc'] = 'value';
$a[2][4] = 'more complex!';
$a['b']['d']['g'] = 4;

此時,isset()不會工作,但array_key_exists都沒有。 然后如何檢查,如果我想知道[2] [4]是否存在,還是['b'] ['d'] ['g']呢?

這可能適合你(多維數組的遞歸函數)嗎?

function array_key_exists_r($needle, $haystack)
{
    $result = array_key_exists($needle, $haystack);
    if ($result) return $result;
    foreach ($haystack as $v) {
        if (is_array($v)) {
            $result = array_key_exists_r($needle, $v);
        }
        if ($result) return $result;
    }
    return $result;
}

這是一個有趣的問題需要解決,在這里你去:

function key_exists_recursive($keys, $array)
{
    if(!is_array($keys) or !is_array($array))
    {
        return false;
    }

    if(count($keys) > 1)
    {
        return key_exists_recursive(array_slice($keys, 1), $array[$keys[0]]);
    }

    return isset($array[$keys[0]]);
}

用法: key_exists_recursive(array('c'), $a);

isset()實際上應該為此工作。 嘗試運行以下內容:

$a = array();
$a['b']['d']['g'] = 4;

if (isset($a['b']['d']['g']))
{
  print_r('b,d,g exists!');
}

if (!isset($a['1']['2']['3']))
{
  print_r('1,2,3 does not exist!');
}

輸出:

b,d,g存在! 1,2,3不存在!

這回答是:

function array_keys_exist($searchForKeys = array(), $inArray) {
    $inArrayKeys = array_keys($inArray);
    return count(array_intersect($searchForKeys, $inArrayKeys)) == count($searchForKeys); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM