Arrays 如何计算value1和value2在数组的键中出现的次数?

Arrays 如何计算value1和value2在数组的键中出现的次数?,arrays,count,key,key-value,Arrays,Count,Key,Key Value,不管我怎么搜索,我都找不到答案。也许我只是问错了,但我希望这里有人能给我一个答案 我知道如何计算数组中的值,但我需要计算某个值与某个其他值在数组键中出现的频率 我曾尝试使用“foreach”和“if”语句进行迭代,但就是无法使其工作 我正在使用的数组看起来像这样,简化为只显示我感兴趣的键: Array ( [0] => Array ( [class] => 2 [startissue] => 337

不管我怎么搜索,我都找不到答案。也许我只是问错了,但我希望这里有人能给我一个答案

我知道如何计算数组中的值,但我需要计算某个值与某个其他值在数组键中出现的频率

我曾尝试使用“foreach”和“if”语句进行迭代,但就是无法使其工作

我正在使用的数组看起来像这样,简化为只显示我感兴趣的键:

Array
(
    [0] => Array
        (
            [class] => 2
            [startissue] => 337
        )

    [1] => Array
        (
            [class] => 11
            [startissue] => 342
        )

    [2] => Array
        (
            [class] => 11
            [startissue] => 337
        )

    [3] => Array
        (
            [class] => 2
            [startissue] => 337
        )

)
我想知道“class”2与“Startissure”337一起出现了多少次(在本例中出现了两次),并保留键/值信息。结果数组非常好,如下所示: 排列

我已经能够生成这样一个数组,但无论我如何尝试,都无法获得正确的计数

任何帮助都将不胜感激

您可以使用一个HashMap(或dictionary),该HashMap(或dictionary)将的值作为键保存,并将其他dictionary的值作为键保存,这些dictionary将startissue的编号作为键,并将此类关联的出现次数作为值保存

在Java中,类似于
Map
,其中前两个整数类型(按顺序)关联到类和星组织

该算法的描述如下:遍历数组的元素,并将每个类号映射到一个字典,该字典将包含一对startissue数字和1(1次出现)。如果类已经存在,您只需查找关联的字典。如果startissue键存在,只需增加其关联值

编辑: Python代码(类似于伪代码):

您可以这样检查:

if classValue in dictionary and startIssue in dictionary[classValue]:
    return dictionary[classValue][startIssue]

好的,明白了。感谢@Halex让我走上正轨。以下是我的代码,减去“isset”和“in_array”检查(以避免注意),以便更容易查看:

$class=0;
$start=0;
$combo=array();

foreach ($giftlist as $giftlists) {

    $class = $giftlists['class'];
    $start = $giftlists['startissue'];

    if ($giftlists['class']==$class && $giftlists['startissue']==$start) {
        $combo[$class][$start]=$combo[$class][$start]+1;

    } elseif (in_array($class,$giftlists)) {
        $combo[$class][$start]=1;

    } else {
        $combo[$class][$start]=0;
    }

}

echo '<pre>'; print_r($combo); echo '</pre>';

如果可能的话,我更喜欢用PHP来完成这一切。另外,如果我错了,请纠正我,但听起来你所描述的逻辑只会计算梅的类有多少是相同的,以及有多少星组织是相同的。我想数一数有多少类/星型纸巾是相同的。我很高兴你做到了。我更新了我的答案,以更可读的方式包含一个示例代码(python类似于伪代码)。由于其他人可能会从另一种编程语言遇到这个问题,我建议您将我的答案标记为解决方案,以帮助他们更快地找到它。祝您今天过得愉快!
if classValue in dictionary and startIssue in dictionary[classValue]:
    return dictionary[classValue][startIssue]
$class=0;
$start=0;
$combo=array();

foreach ($giftlist as $giftlists) {

    $class = $giftlists['class'];
    $start = $giftlists['startissue'];

    if ($giftlists['class']==$class && $giftlists['startissue']==$start) {
        $combo[$class][$start]=$combo[$class][$start]+1;

    } elseif (in_array($class,$giftlists)) {
        $combo[$class][$start]=1;

    } else {
        $combo[$class][$start]=0;
    }

}

echo '<pre>'; print_r($combo); echo '</pre>';
if ((in_array($class,$giftlists) && $giftlists['class']==$class) && (in_array($start,$giftlists) && $giftlists['startissue']==$start) && isset($combo[$class]) && isset($combo[$class][$start]) ) {