1

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

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

5 回答 5

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.
}
于 2013-09-10T18:49:56.053 回答
1

这个怎么样?

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

减去 1,如果找到该密钥,则使用全长。

于 2013-09-10T18:49:46.357 回答
1

另一个解决方案是array_diff_key函数

$count = count(array_diff_key(array('ignore_me'=>null), $a)));
于 2013-09-10T18:54:07.600 回答
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!";
   }
?>
于 2013-09-10T19:51:59.237 回答
0
foreach($a as $key => $row)
{
    if($key == 'ignore_me')
    {
        unset($array[$key]);
    }
}
$count = count($array); 
于 2013-09-10T18:54:54.790 回答