ต้องการตัดค่าซ้ำ จาก array หลายค่า เพื่อหาผลรวมของข้อมูลค่ะ
อะไรที่เป้นส่วนอ้างอิงว่าซ้ำ key หรือ value
และรูปแบบการรวม รวมแบบไหน
ประวัติการแก้ไข 2024-08-15 12:08:04
Date :
2024-08-15 12:07:43
By :
Chaidhanan
สร้าง buffer array มาเก็บค่า เพื่อตรวจสอบค่าที่ซ้ำกัน
Code (PHP)
$buff_key_dup=[]; // สำหรับเก็บค่า key ที่ซ้ำ
$buff_val_none_dup=[]; // สำหรับเก็บค่า value ที่ไม่ซ้ำ
foreach( $a as $k=>$a2){
foreach( $a2 as $k2=>$val){
if( !in_array($val, $buff_val_none_dup) ){
$buff_val_none_dup[]=$val; // เก็บค่า value ที่ไม่ซ้ำ
}else $buff_key_dup[]=$k.':'.$k2; // เก็บค่า key ที่มีค่าซ้ำ
}
}
foreach( $a as $k=>$a2){
foreach( $a2 as $k2=>$val){
if( !in_array($k.':'.$k2, $buff_key_dup) ){ // ตรวจสอบ key ที่ไม่อยู่ใน $buff_key_dup
$sum+=$val; // บวกเข้า buffer
}
}
}
echo $sum;
Date :
2024-08-16 05:02:28
By :
Chaidhanan
ปล. มันควรตรวจสอบตั้งแต่ตอนนำข้อมูลเข้าแล้วนะครับ
แต่ก็แล้วแต่วัตถุประสงค์
Date :
2024-08-16 05:08:53
By :
Chaidhanan
Code (PHP)
// ข้อมูลที่ได้รับมา
$A = [
'B0001' => [
1 => 'A000001',
2 => 'A000001',
3 => 'A000002',
4 => 'A000003',
],
'IB0001' => [
3 => 'A000002',
]
];
$B = [
'B0001' => [
1 => 100,
2 => 100,
4 => 300,
],
'IB0001' => [
3 => 200,
]
];
// ตัวแปรเก็บค่าที่รวมแล้ว
$total = 0;
// ตัวแปรเก็บรายการที่ไม่ซ้ำกัน
$uniqueItems = [];
// ลูปวนตามค่าของ A
foreach ($A as $key => $values) {
foreach ($values as $index => $value) {
// ตรวจสอบว่าค่าจาก A ยังไม่เคยเจอมาก่อนหรือไม่
if (!in_array($value, $uniqueItems)) {
$uniqueItems[] = $value;
// รวมค่าจาก B ที่ตรงกับ index เดียวกัน
if (isset($B[$key][$index])) {
$total += $B[$key][$index];
}
}
}
}
echo "ผลลัพธ์คือ $total"; // แสดงผลลัพธ์ที่ได้
Date :
2024-08-29 15:25:51
By :
Guest999
Load balance : Server 03