如何基于PHP中的两列来计算数组值?

时间:2019-07-20 01:44:01

标签: php arrays multidimensional-array

我有一个多维数组(来自Salesforce SOQL),具有多个结果(准确地说是74个)。每个数组的键和值如下:

array {
    ["ID"] => "Project ID"
    ["Name"] => "Project Name"
    ["Project Type"] => "Type Name"
    ["Project Stage"] => "Stage Name"
    ["Value"] => "Amount"
    ["Capacity"] => "Number"
    ["Project Group 1"] => "Group Name"
    ["Project Group 2"] => "Group Name"
    ["Project Group 3"] => "Group Name"
    ["Project Group 4"] => "Group Name"
}

我要根据项目和项目组的数量来计算结果的数量,以便将结果转换为用于生成CSV的数组。

我目前可以使用array_count_valuesarray_column来根据项目组的值计算结果的数量。这是该结果的代码:

// Project Group 1 Totals
$results = array_count_values(array_column($array, 'Project Group 1'));
foreach($results as $key => $value) {
    if($key === 'Group Name (1)') $key = 'New Group Name (1)';
    if($key === 'Group Name (2)') $key = 'New Group Name (2)';
    $csv_array = array('New Project Group 1 Name', $key, $value);
    fputcsv($output, $csv_array);
}

// Results
array {
    [0] => "New Project Group 1 Name"
    [1] => "New Group Name (1)"
    [2] => (Number)
}
array {
    [0] => "New Project Group 1 Name"
    [1] => "New Group Name (2)"
    [2] => (Number)
}

如何将每种项目类型的结果进行拆分,以便最终CSV数组如下所示?

array {
    [0] => "New Project Group 1 Name"
    [1] => "New Group Name (1)"
    [2] => (Number)
    [3] => "Project Type Name"
}
array {
    [0] => "New Project Group 1 Name"
    [1] => "New Group Name (2)"
    [2] => (Number)
    [3] => "Project Type Name"
}

1 个答案:

答案 0 :(得分:0)

好吧。我想通了。

由于有了这个答案(https://stackoverflow.com/a/39035322/4220832,我才有了停止使用#problemWith .k-button:first-child .k-icon.k-i-close { display: none !important; } array_count_values的想法,而只是在两个单独的array_column循环中工作。

这是解决方案:

foreach

我希望这个发现对需要它的人有所帮助。最好将这个解决方案简化为项目中可行的功能,以反复使用。