[英]How to Combine 2 Array with same key
我有 2 個這樣的數組...
$a = [
["Name" => "DH", "TotalSel" => 11700.0],
["Name" => "PD", "TotalSel" => 7000.0],
["Name" => "AT", "TotalSel" => 3000.0],
["Name" => "CC", "TotalSel" => 2400.0]
]
$b = [
["Name" => "PD", "TotalBuy" => 7800.0],
["Name" => "EP", "TotalBuy" => 7000.0],
["Name" => "CC", "TotalBuy" => 6900.0],
["Name" => "AT", "TotalBuy" => 2400.0]
]
然后我想組合和分組所有相同的鍵(“名稱”),以便最終結果看起來像這樣......
$result = [
["Name" => "DH", "TotalSel" => 11700.0, "TotalBuy" => 0.0],
["Name" => "PD", "TotalSel" => 7000.0, "TotalBuy" => 7800.0],
["Name" => "AT", "TotalSel" => 3000.0, "TotalBuy" => 2400.0],
["Name" => "CC", "TotalSel" => 2400.0, "TotalBuy" => 6900.0],
["Name" => "EP", "TotalSel" => 0.0, "TotalBuy" => 7000.0]
]
我怎樣才能做到這一點?
我創建了不同的名稱數組。 然后在每個名稱的 for 循環中,在數組 $a 和 $b 中搜索該名稱的索引。 這給出了每個名稱的總賣出和總買入值。 並用相關信息創建了數組 $c。
$a = [
["Name" => "DH", "TotalSel" => 11700.0],
["Name" => "PD", "TotalSel" => 7000.0],
["Name" => "AT", "TotalSel" => 3000.0],
["Name" => "CC", "TotalSel" => 2400.0]
];
$b = [
["Name" => "PD", "TotalBuy" => 7800.0],
["Name" => "EP", "TotalBuy" => 7000.0],
["Name" => "CC", "TotalBuy" => 6900.0],
["Name" => "AT", "TotalBuy" => 2400.0]
];
$c = [];
// make all names array
$names = [];
for($i=0; $i<count($a); $i++) {
//echo $a[$i]['Name'] .", ". $a[$i]['TotalSel']."<br>";
$names[] = $a[$i]['Name'];
}
for($i=0; $i<count($b); $i++) {
//echo $b[$i]['Name'] .", ". $b[$i]['TotalBuy']."<br>";
if(!in_array($b[$i]['Name'], $names)) {
$names[] = $b[$i]['Name'];
}
}
$finalIndex=0;
foreach($names as $key=>$val) {
//echo $val ."<br>";
$index = searchArray($a, "Name", $val);
if($index!=-1) {
$sel = $a[$index]['TotalSel'];
}
else {
$sel = 0;
}
$index = searchArray($b, "Name", $val);
if($index!=-1) {
$buy = $b[$index]['TotalBuy'];
}
else {
$buy = 0;
}
$c[$finalIndex]['Name']=$val;
$c[$finalIndex]['TotalSel'] = $sel;
$c[$finalIndex]['TotalBuy'] = $buy;
$finalIndex++;
}
for($i=0; $i<count($c); $i++) {
echo $c[$i]['Name'] .", ".$c[$i]['TotalSel'].",". $c[$i]['TotalBuy']."<br>";
}
function searchArray($arr,$field,$value) {
//echo "<br>-----------------------field = $field, value = $value <br>";
$j=0;
foreach($arr as $key ) {
foreach ($key as $key1 => $val1) {
//echo "$key1, $val1 , $j<br>";
if($key1 == $field && $val1 == $value ) {
return $j; // array index
}
}
$j++;
}
return -1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.