检查数组是否包含与列表不匹配的键

时间:2013-09-10 18:45:52

标签: php arrays

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

$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) {...}

5 个答案:

答案 0 :(得分:2)

使用标准功能的一种方法如下:

$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.
}

答案 1 :(得分:1)

这个怎么样?

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

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

答案 2 :(得分:1)

另一个解决方案是array_diff_key function

$count = count(array_diff_key(array('ignore_me'=>null), $a)));

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

$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!";
   }
?>