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 : 100111



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



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




จากโค้ดนี้ครับ เป็นการตัดค่าที่ซ้ำกันออกจาก Array

Code (PHP)
<?php
		$arr_num = array(8,2,8,9,8,2,8); //ตัวอย่างค่าที่รับมา
		
		$count_arr = count($arr_num);
	
		for ($i = 0; $i <= $count_arr-2; $i++ ){
	 
		$arr_new[$i] = $arr_num[$i].$arr_num[$i+1]; //จับคู่ หลัก1หลัก2,หลัก2หลัก3,...,หลักnหลักn+1
	
		}
		// จะได้ 82,28,89,98,82,28
        // ตัดค่าซ้ำ
		$r=0; 
		$arr = array();	
		$b= array_unique ($arr_new);
		foreach($b as $value){
		$arr[$r] = $value;
		$r++;
		}
		// เหลือ 82,28,89,98
		$count = count($arr);
		
		for ($i = 0; $i <= $count-1; $i++ )
        {
        echo $arr[$i]."<br />";
        }
?>


สิ่งที่จะหาเพิ่มเติมคือ ตอนนี้เลขที่ได้จากการตัดค่าซ้ำออกแล้วจะได้

82
28
89
98

ซึ่งจะเห็นว่า 82 กับ 28 และ 89 กับ 98 เป็นตัวเลขเดียวกันซึ่งแค่สลับตำแหน่งกัน
ทำอย่างไรจะตัดค่าที่เหมือนกันแค่สลับตำแหน่งให้เหลือตัวเลขเพียงค่าเดียวได้ครับ

เช่นผลลัพธ์ที่ต้องการ 82, 89



Tag : PHP, MySQL









ประวัติการแก้ไข
2013-09-06 05:34:55
2013-09-06 05:37:14
2013-09-06 05:37:52
2013-09-06 05:38:08
2013-09-06 05:38:26
2013-09-06 05:38:42
2013-09-06 05:38:53
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-09-06 05:33:48 By : pengbuts View : 2275 Reply : 8
 

 

No. 1



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



สถานะออฟไลน์
Twitter Facebook Blogger

Code (PHP)
<?php
function number_reverse($num){
	$flag10 = intval($num/10);
	$flag1 = $num - ($flag10*10);
	return ($flag1*10)+$flag10;
}
$arr_num = array(8,2,8,9,8,2,8); //ตัวอย่างค่าที่รับมา

$count_arr = count($arr_num);
for ($i = 0; $i <= $count_arr-2; $i++ ){
	$arr_new[$i] = $arr_num[$i].$arr_num[$i+1]; //จับคู่ หลัก1หลัก2,หลัก2หลัก3,...,หลักnหลักn+1
}
// จะได้ 82,28,89,98,82,28
// ตัดค่าซ้ำ
$r=0; 
$arr = array();	
$b= array_unique ($arr_new);
foreach($b as $value){
	$arr[$r] = $value;
	$r++;
}
// เหลือ 82,28,89,98
$count = count($arr);

for ($i = 0; $i < $count; $i++ ){
	$isOK = TRUE;
	//echo $i;
	if($i>0){                      
		for($k = 0; $k < $i; $k++){ 
			//echo $k,' ';
			if($arr[$i] == number_reverse($arr[$k])){ 
				$isOK = FALSE; 
				break; 
			} 
		}
	//echo '<br>';
	}
	echo $isOK?($arr[$i]."<br />"):'';
}
?>

http://php.net/manual/en/function.array-unique.php :P








ประวัติการแก้ไข
2013-09-06 06:13:01
2013-09-06 06:23:58
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-06 06:05:56 By : itpcc
 


 

No. 2



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



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


โอ้วพระเจ้า ขอบคุณพี่ itpcc มากๆเลยครับ ขอนำไปศึกษานะครับๆ

ขอความรู้อีกนิดครับ เห็นฟังก์ชั่นที่พี่เขียนพอจะศึกษาได้
แต่รูปแบบการเขียนแบบนี้ $isOK?($arr[$i]."<br />"):''; มันเรียกว่าอะไร
โดยเฉพาะตรง $isOK?(" "):''; ช่วยอธิบายหรือจะหาศึกษาเพิ่มเติมได้ยังไงครับ
ที่ผมเรียนจากหนังสือที่ซื้อมาไม่เคยเจอเล่มไหนเลยครับ


ประวัติการแก้ไข
2013-09-06 07:29:00
2013-09-06 07:33:02
2013-09-06 07:34:17
2013-09-06 07:35:25
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-06 07:16:27 By : pengbuts
 

 

No. 3



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



สถานะออฟไลน์
Twitter Facebook Blogger

มันเรียกว่า ternary conditional operator ครับ
http://php.net/manual/en/language.expressions.php
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-06 14:54:56 By : itpcc
 


 

No. 4



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



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


ขอบคุณมากๆครับๆๆๆ

ขออีกซักนิดครับ คือค่าที่ได้ผมต้องการเอาไปใส่ใน SQL เนื่องจาก $isOK?($arr[$i]):'' นำไปใส่เลยไม่ได้ จะทำยังไงครับ พอสร้าง
$number = $isOK?($arr[$i]):''; แล้วเกิดค่าว่างขึ้นมา

Code (SQL)
SELECT * FROM `table` WHERE number='".$number."'



ประวัติการแก้ไข
2013-09-07 01:53:54
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-06 16:21:53 By : pengbuts
 


 

No. 5



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



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


ได้แล้วครับ แต่ไม่รู้มีวิธีที่ง่ายกว่านี้รึเปล่า ทำเหมือนเดิมคือสร้างอาร์เรย์ตัวใหม่มาเก็บค่า จากอาร์เรย์ที่ถูกตัดออกไป

Code (PHP)
<?php
function number_reverse($num){
	$flag10 = intval($num/10);
	$flag1 = $num - ($flag10*10);
	return ($flag1*10)+$flag10;
}

$arr_num = array(8,2,8,9,8,2,8);

$count_arr = count($arr_num);
for ($i = 0; $i <= $count_arr-2; $i++ ){
	$arr_new[$i] = $arr_num[$i].$arr_num[$i+1];
}

$r=0; 
$arr = array();	
$b= array_unique ($arr_new);
foreach($b as $value){
	$arr[$r] = $value;
	$r++;
}

$count = count($arr);

for ($i = 0; $i < $count; $i++ ){
	$isok = TRUE;

	if($i>0){                      
		for($k = 0; $k < $i; $k++){ 

			if($arr[$i] == number_reverse($arr[$k])){ 
				$isok = FALSE; 
				break; 
			} 
		}

	}
	$new_number[$i] = $isok?($arr[$i]):'';
	
	if($new_number[$i]==''){
		unset($new_number[$i]);
	}

}
	$num=0; 
	$arr_num = array();	
	$b_num= array_unique ($new_number);
	foreach($b_num as $value_num){
		$arr_num[$num] = $value_num;
		$num++;
	}
print_r($arr_num);
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-07 02:26:15 By : pengbuts
 


 

No. 6



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-07 06:53:40 By : mr.win
 


 

No. 7



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



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

มาย่อโค๊ดชาวบ้านครับ
<?php
	$arr_num = array(8,2,8,9,8,2,8);
	$count_arr = count($arr_num);
	$data = array();
	for ($i = 0; $i <= $count_arr-2; $i++ ){
		$data[$i] = $arr_num[$i].$arr_num[$i+1];
	}
	
	$unique = array_unique($data); // เหลือ 82,28,89,98
	$count = count($unique);
	$newArray = array();
	for($i = 0; $i < $count; $i++ ){
		if(!isset($unique[$i])) continue;
		$strNum = (string)$unique[$i];
		$rev = (int)strrev($strNum);
		if($k = array_search($rev, $unique)){
			unset($unique[$k]);
		}
	}
	var_dump($unique);
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-07 11:02:56 By : {Cyberman}
 


 

No. 8



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



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


โอ้ววว สุดยอดเหลือแค่เนี๊ยๆ ขอบคุณมากๆครับๆๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-07 12:01:30 By : pengbuts
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
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 04
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 อัตราราคา คลิกที่นี่