检查数组是否具有与列表不匹配的键


Check whether array has keys that don't match a list

检查 a 是否有与特定列表不匹配的数组键的最简单方法是什么?

$a = array(
  [ignore_me] => "blah blah blah",
  [name] => "Don"
);
does_array_have_non_ignored_entries($a); // returns true

我可以想到很多方法来编写这个函数,不知道PHP是否有快速的解决方案。我拥有的最好的一个是:

$length = count($a);
$ignored_entry = (in_array($a, 'ignore_me') ? 1 : 0;
if ($length - $ignored_entry > 0) {...}

使用标准函数执行此操作的一种方法如下:

$ignored_keys = array("ignore_me"); // can be extended to ignore several keys
$diff = array_diff_key($array,array_flip($ignored_keys));
if( $diff) {
    // there are keys that weren't ignored.
}

这个怎么样?

$count = isset($a['ignore_me']) ? count($a) -1 : count($a);

减去 1,如果找到该键,否则使用全长。

另一种解决方案是array_diff_key函数

$count = count(array_diff_key(array('ignore_me'=>null), $a)));
foreach($a as $key => $row)
{
    if($key == 'ignore_me')
    {
        unset($array[$key]);
    }
}
$count = count($array); 

为此,您可以在构建函数中使用数组:

$a = array(
  [ignore_me] => "blah blah blah",
  [name] => "Don"
);

if (array_key_exists("ignore_me",$a))
   {
   echo "Key exists!";
   }
else
   {
   echo "Key does not exist!";
   }
?>