在PHP中计算Halstead复杂度时,什么算作运算符和操作数?

在PHP中计算Halstead复杂度时,什么算作运算符和操作数?,php,operators,metrics,operands,Php,Operators,Metrics,Operands,我想用这段代码来计算Halstead的复杂度: <?php $words = explode("\n", file_get_contents('http://www.puzzlers.org/pub/wordlists/unixdict.txt')); foreach ($words as $word) { $chars = str_split($word); sort($chars); $anagram[implode($chars)][] = $word; }

我想用这段代码来计算Halstead的复杂度:

<?php
$words = explode("\n", file_get_contents('http://www.puzzlers.org/pub/wordlists/unixdict.txt'));
foreach ($words as $word) {
    $chars = str_split($word);
    sort($chars);
    $anagram[implode($chars)][] = $word;
}

$best = max(array_map('count', $anagram));
foreach ($anagram as $ana)
    if (count($ana) == $best)
        print_r($ana);
?>

我理解它的原理(请参阅),但我不理解的是:什么算作运算符,什么算作操作数?似乎没有一个一致的定义


这里有一个更简单的例子(http://www.win.tue.nl/~aserebre/2IS55/2009-2010/9.pdf),我可以遵循,但不能在上面的示例中应用。

根据我的理解,运算符都是运算符(
==
+
++
,等等)和关键字所用语言的(
如果
中断
函数
)。 操作数将是每个标识符,即函数名(自写函数和内置函数)、变量名和常量

根据您的示例:
操作符
foreach
因为
是强制性的,所以我不算它),
[]
(这就像是
+=
,只是用appand而不是添加某物),
如果
=

操作数
$words
分解
$word
stru-split
$chars
排序
$anagram
内爆
$best
max
数组映射
$ana


注意:这个代码度量似乎不经常用于PHP,因此我也没有找到任何关于PHP代码使用的这个度量的参考或示例。

对于PHPAC来说不是一个很好的度量。根据维基百科,它们甚至包括开头的
对于
printf(
。除非我算错了?@AlexKwitny是的,他们把每一对括号都算作一个运算符。我读到了“(这是必须的,所以我不算)。我看到你突出显示了
,因为
。我以为你在谈论
)。也许你对我的霍尔斯特德问题有什么看法