簡體   English   中英

如何使用相同的鍵組合 2 個數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM