我有這個陣列:
$statuses = ['PROSPECT','BACKLOG','PROSPECT'];
$of_tranxs = [2,1,2];
$revs = [3,1,3];
$mgps = [4,1,4];
我想要按重復狀態求和。輸出這樣的陣列:
array(
'status' => ['PROSPECT','BACKLOG'],
'of_tranx' => [4,1],
'rev' => [6,1],
'mgp' => [8,1]
)
我正在使用 PHP 7.4
我嘗試了以下方法:
$result = array_zip_combine(
['status', 'of_tranx', 'rev', 'mgp'],
$statuses, $of_tranxs, $revs, $mgps
);
然后我 foreach 但結果不是我想要的。
uj5u.com熱心網友回復:
我會通過制作字典/查找表/哈希表(這有很多名字)并只對數字求和,同時去除任何其他型別的其他重復項。
所以我會寫一個這樣的輔助函式:
function sumDuplicatesInArray($array) {
$dict = [];
foreach($array as $item) {
$dict[$item] = is_numeric($item) ? ($dict[$item] ?? 0) $item : $item;
}
return array_values($dict);
}
并將其應用于您需要的陣列。見http://sandbox.onlinephpfunctions.com/code/c5ea405718ba7d6b7fdfcae2271964a55d85b71b
uj5u.com熱心網友回復:
$array = array(
'status' => ['PROSPECT','BACKLOG','PROSPECT'],
'of_tranx' => [2,1,2],
'rev' => [3,1,3],
'mgp' => [4,1,4]
);
function sumDuplicatesInArray($array) {
$dict = [];
foreach($array as $item) {
$dict[$item] = is_numeric($item) ? ($dict[$item] ?? 0) $item : $item;
}
return array_values($dict);
}
$final_array = [];
$final_array['status'][] = sumDuplicatesInArray($array['status']);
$final_array['of_tranx'][] = sumDuplicatesInArray($array['of_tranx']);
$final_array['rev'][] = sumDuplicatesInArray($array['rev']);
$final_array['mgp'][] = sumDuplicatesInArray($array['mgp']);
print_R($final_array);
uj5u.com熱心網友回復:
假設您的意思是獲取 status 的唯一值,然后在其他陣列中添加相應的項...
這首先獲取狀態的唯一值,并(為方便起見)將所有其他陣列添加到單個陣列中以允許foreach.
然后回圈遍歷原始狀態,將值添加到一個新陣列(使用array_fill_keys())中,該陣列用于將該型別的所有值添加在一起。使用array_values()洗掉索引鍵...
$statuses = ['PROSPECT', 'BACKLOG', 'PROSPECT'];
$of_tranxs = [2, 1, 2];
$revs = [3, 1, 3];
$mgps = [4, 1, 4];
$statusUnique = array_unique($statuses);
$arrays = [$of_tranxs, $revs, $mgps];
foreach ($arrays as $index => $array) {
$out = array_fill_keys($statusUnique, 0);
foreach ($statuses as $ind => $stat) {
$out[$stat] = $array[$ind];
}
$arrays[$index] = array_values($out);
}
print_r(array_values($statusUnique));
print_r($arrays);
給...
Array
(
[0] => PROSPECT
[1] => BACKLOG
)
Array
(
[0] => Array
(
[0] => 4
[1] => 1
)
[1] => Array
(
[0] => 6
[1] => 1
)
[2] => Array
(
[0] => 8
[1] => 1
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/357418.html
標籤:php
上一篇:MYSQL選擇查詢給出重復的串列
下一篇:按隨機鍵對多維陣列進行排序
