ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[php] อยากสอบถามวิธีเปรียบเทียบข้อมูล 2 ชุด
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [php] อยากสอบถามวิธีเปรียบเทียบข้อมูล 2 ชุด  (อ่าน 4571 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
sirisak
ก๊วนเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 296



ดูรายละเอียด
« เมื่อ: 20 เมษายน 2011, 19:13:37 »

คือว่าสมมุติผมมีข้อมูล
ชุดที่ 1
A B C 1 2 3
ชุดที่ 2
A C D 1 2 4


ถ้าผมต้องการเทียบให้ข้อมูลชุดที่ 2 คือข้อมูลใหม่และข้อมูลชุดที่ 1 คือข้อมูลเก่า
ผมจะเขียนโปรแกรมเปรียบเทียบได้อย่างไรว่า

1.มีข้อมูลอะไรที่มาใหม่บ้าง เมื่อเทียบกับชุดเก่า จากตัวอย่างคือ D และ 4
2.มีข้อมูลอะไรที่ซ้ำกันบ้าง เมื่อเทียบกับชุดเก่า จากตัวอย่างคือ A C 1 2
3.มีข้อมูลอะไรที่หายไปบ้าง เมื่อเทียบกับชุดเก่า จากตัวอย่างคือ B และ 3

รบกวนขอคำแนะนำด้วยครับ
ขอบคุณครับ  wanwan017

บันทึกการเข้า
picharnan
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 90
ออฟไลน์ ออฟไลน์

กระทู้: 1,400



ดูรายละเอียด
« ตอบ #1 เมื่อ: 20 เมษายน 2011, 19:45:38 »

โค๊ด:
<?php
$seta = array("A","B","C","1","2","3");
$setb = array("A","C","D","1","2","4");

$result_of_new compare_new_value($seta,$setb);
$result_of_intersect compare_intersect_value($seta,$setb);
$result_of_lost compare_lost_value($seta,$setb);

echo '<pre>';
print_r($result_of_new);
print_r($result_of_intersect);
print_r($result_of_lost);
echo '</pre>';

function compare_new_value($old,$new){
$temp = array();
$hit false;
foreach ($new as $ni => $nvalue) {
$hit false;
foreach ($old as $oi => $ovalue) {
if( $nvalue == $ovalue ){
$hit true;
}
}
if($hit == false){
array_push($temp$nvalue);
}
}
return $temp;
}

function compare_intersect_value($old,$new){
$temp = array();
$hit false;
foreach ($new as $ni => $nvalue) {
$hit false;
foreach ($old as $oi => $ovalue) {
if( $nvalue == $ovalue ){
$hit true;
}
}
if($hit == true){
array_push($temp$nvalue);
}
}
return $temp;
}

function compare_lost_value($old,$new){
$temp = array();
$hit false;
foreach ($old as $oi => $ovalue) {
$hit false;
foreach ($new as $ni => $nvalue) {
if( $nvalue == $ovalue ){
$hit true;
}
}
if($hit == false){
array_push($temp$ovalue);
}
}
return $temp;
}

?>


ลองดูครับน่าจะพอช่วยได้บ้าง
บันทึกการเข้า
sirisak
ก๊วนเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 296



ดูรายละเอียด
« ตอบ #2 เมื่อ: 20 เมษายน 2011, 19:54:39 »

ขอบคุณมากๆครับท่าน picharnan
แล้วทีนี้ผมอยากจะเอาค่าที่เป็น array ทั้งสองชุดที่ต้องการเปรียบเทียบ รับค่ามาจาก textbox จะได้ไหมครับ
หรือผมอยากจะดึงข้อมูลมาจาก database แล้วมาแปลงเป็น array เพื่อเปรียบเทียบ
จะต้องทำอย่างไรครับ ขอบคุณมากๆครับ  wanwan017
บันทึกการเข้า
permanentrich
ก๊วนเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 236



ดูรายละเอียด
« ตอบ #3 เมื่อ: 21 เมษายน 2011, 08:19:45 »

ช่วยดัน  Embarrassed
บันทึกการเข้า
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 103
ออฟไลน์ ออฟไลน์

กระทู้: 1,312



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 21 เมษายน 2011, 18:40:45 »

www.php.net/array
จะ add จะเทียบมีหมด
บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 22 เมษายน 2011, 10:34:23 »

1. array_diff
2. array_intersect, array_unique
3. array_diff แต่สับตำแหน่งกัน
บันทึกการเข้า

dreamer
คนรักเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 134



ดูรายละเอียด
« ตอบ #6 เมื่อ: 22 เมษายน 2011, 15:04:00 »

ขอบคุณมากๆครับท่าน picharnan
แล้วทีนี้ผมอยากจะเอาค่าที่เป็น array ทั้งสองชุดที่ต้องการเปรียบเทียบ รับค่ามาจาก textbox จะได้ไหมครับ
หรือผมอยากจะดึงข้อมูลมาจาก database แล้วมาแปลงเป็น array เพื่อเปรียบเทียบ
จะต้องทำอย่างไรครับ ขอบคุณมากๆครับ  wanwan017

รับค่าจาก textbox เช่นกรอก A,B,C,D ก็เอามาแปลงเป็น array ก่อน คือ $array = explode(",", $value_from_textbox);

อ่านจาก database

$sql = "select field_name from table_name";
$result = mysql_query($sql);
$array = array();
while($row = mysql_fetch_assoc($result))
{
  $array[] = $row["field_name"]
}

เอาค่า array ไปเที่ยบต่อ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์