php - 如何根据 PHP 中的两列计算数组值?
问题描述
我有一个多维数组(来自 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_values
和来计算结果的数量array_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"
}
解决方案
出色地。我想通了。
多亏了这个答案(https://stackoverflow.com/a/39035322/4220832),我有了停止使用array_count_values
并array_column
仅在两个单独的foreach
循环中工作的想法。
这是解决方案:
$count = [];
foreach($array as $result) {
$search = $result['Project Type'] . ',' . $result['Project Group 1'];
if(!isset($count[$search])) {
$count[$search] = 1;
} else {
$count[$search] += 1;
}
}
foreach($count as $key => $value) {
if($key === 'Project Type,Old Project Group Value') $key = 'Project Type,New Project Group Value';
$split = explode(',', $key);
$csv_array = array($split[0], $split[1], 'New Project Group 1 Name', $value);
//echo'<pre>';print_r($csv_array);echo'</pre>'; // For Testing Purposes To Use
fputcsv($output, $csv_array);
}
我希望这个发现可以帮助任何需要它的人。最好将此解决方案简化为项目中的可行功能,以便反复使用。
推荐阅读
- javascript - 数组拼接一次删除错误的项目或多个项目
- google-cloud-platform - Oracle 到大查询表
- java - 如何通过将整行与枚举值进行比较来解析整行?
- visual-studio-2019 - VS2019 MSTest 输出被截断,通过 Copy All 获取所有输出的选项不再起作用?
- c# - SSH.NET SFTP 客户端在连接到 Cerberus SFTP 服务器时给出“路径不存在”
- javascript - 如何防止在 PHP 或 javascript 中使用 xlink 的 SVG 中的十亿笑攻击?
- reactjs - 登录到上一个屏幕后 React Native Navigation v5 重定向
- android - Android + exoplayer:本地播放AES加密视频
- html - 从 API 获取值后,如何在 ionic 4 中动态更改多个单选按钮组中的单选按钮值?
- python - 左键单击上下文菜单