Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ต้องการตัดค่าซ้ำ จาก array หลายค่า เพื่อหาผลรวมของข้อมูลค่ะ



 

ต้องการตัดค่าซ้ำ จาก array หลายค่า เพื่อหาผลรวมของข้อมูลค่ะ

 



Topic : 137210



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์




A[B0001][1]=A000001
A[B0001][2]=A000001
A[IB0001][3]=A000002
A[B0001][4]=A000003

B[B0001][1]=100
B[B0001][2]=100
B[IB0001][3]=200
B[B0001][4]=300

ตัดค่าซ้ำในข้อมูล A เพื่อ นำค่า B มารวมกัน
ผลลัพธ์คือ 600 ค่ะ

ต้องเขียน code ประมาณไหนคะ PHP



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2024-08-15 09:45:44 By : pornwilaip View : 209 Reply : 9
 

 

No. 1



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


อะไรที่เป้นส่วนอ้างอิงว่าซ้ำ key หรือ value

และรูปแบบการรวม รวมแบบไหน








ประวัติการแก้ไข
2024-08-15 12:08:04
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-08-15 12:07:43 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


array_unique ตัดค่าซ้ำที่ value ของ array

https://www.php.net/manual/en/function.array-unique.php
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-08-15 13:49:10 By : mr.v
 

 

No. 3



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2024-08-15 12:07:43
รายละเอียดของการตอบ ::
A[B0001][1]=A000001
A[B0001][2]=A000001
ตรง A000001 คือค่าซ้ำค่ะ ถ้าตรวจเจอวว่า A[B0001][1] ซ้ำกับ A[B0001][2] จะตัด B[B0001][2] ออกไปเพื่อไม่ให้จำนวนซ้ำค่ะ

B[B0001][1]=100
B[B0001][2]=100
ผลลัพธ์คือ
B[B0001][1]=100 + B[IB0001][3]=200 +B[B0001][4]=300 =600 ค่ะ

A เก็บเลขที่อ้างอิงของการชำระเงิน
B เก็บยอดที่ชำระเงิน
จากระบบ มีการออกใบเสร็จหลายใบ แต่ลูกค้าโอนมายอดเดียว จึงต้องใส่หมายเลขอ้างอิงซ้ำๆ กันในแต่ละใบเสร็จค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-08-15 14:20:46 By : pornwilaip
 


 

No. 4



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


สร้าง 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
 


 

No. 5



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ปล. มันควรตรวจสอบตั้งแต่ตอนนำข้อมูลเข้าแล้วนะครับ

แต่ก็แล้วแต่วัตถุประสงค์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-08-16 05:08:53 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2024-08-16 05:02:28
รายละเอียดของการตอบ ::
ขอบคุณค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-08-16 14:06:55 By : pornwilaip
 


 

No. 7



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2024-08-16 05:08:53
รายละเอียดของการตอบ ::
รบกวนสอบถามอีกเรื่องค่ะ การค้นหา จาก sql โดยใช้ Like %$text% มันทำให้ database ช้าจริงไหมคะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-08-26 15:11:59 By : pornwilaip
 


 

No. 8



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : pornwilaip เมื่อวันที่ 2024-08-26 15:11:59
รายละเอียดของการตอบ ::
ก็ช้ากว่า การใช้ ทั้ง field ทำ index ครับ
เพราะ มันทำการค้นหา text ใน field แต่ละเรคคอร์ด เลี่ยงได้ก็เลี่ยงครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-08-26 18:21:41 By : Chaidhanan
 


 

No. 9

Guest


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
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ต้องการตัดค่าซ้ำ จาก array หลายค่า เพื่อหาผลรวมของข้อมูลค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่