|
|
|
เรื่อง array ครับ - เราจะตัดข้อมูล ที่ซ้ำกันใน array ได้ยังไงครับ เช่น |
|
|
|
|
|
|
|
ปู่เสื่อรอฟัง *=* เก็บข้อมูลเผื่อวันหน้า
|
|
|
|
|
Date :
2009-03-24 16:45:08 |
By :
torrider |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if >1 ครับ
|
|
|
|
|
Date :
2009-03-24 16:58:00 |
By :
kojangza |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สวัสดีครับ
จิงๆ แล้วโปรแกรมจะเขียนยากหรือว่า ง่ายอยู่ที่เราออกแบบ ฐานข้อมูลนะครับ อันนี้
มาจากประสบการจริงเพราะว่า บ้างอย่างเราสามารถ Query ขึ้นมาได้เลยจะง่ายกว่านะครับ
ok เข้าเรื่องนะครับ ผมก็ได้เขียน code กับ โจทย์ข้อนี้ออกมาแบบนี้นะครับ
Code (PHP)
<?
$arr_txt = array("1","1","2","2","3","3","4","5");
$arr_txt_new = array("");
$number = 0;
foreach($arr_txt as $value){
echo $value;
echo "<br>";
if(check($arr_txt_new,$value)){
$arr_txt_new[$number] = $value;
$number ++;
}
}
echo "********************************************<br>";
foreach($arr_txt_new as $value){
echo $value;
echo "<br>";
}
function check($array_txt,$value){
foreach($array_txt as $value_txt){
if($value_txt == $value){
return false;
}
}
return true;
}
?>
ลองใช้งานดูถ้าสงสัยหรือว่า งง ก็สอบถามนะครับผมเขียนสดๆ แต่ว่าผมเอาไป run หละ ใช้งานได้ครับ
|
|
|
|
|
Date :
2009-03-24 17:09:19 |
By :
dr.website |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$a[0]=1;
$a[1]=1;
$a[2]=3;
$a[3]=2;
$a[4]=3;
$a[5]=3;
$a[6]=3;
$a[7]=7;
$a[8]=7;
$a[9]=1;
$a[10]=1;
$b= array_unique ($a);
print_r($b);
แต่ ผม เอาข้อมูลออกมาใช่ไม่ได้
แต่ดูได้ โดยใช้ print_r(b);
ใครมีวิธีดึงข้อมูลออกมาใช้ ช่วยที่ ครับ
|
|
|
|
|
Date :
2009-03-24 17:15:55 |
By :
นักเรียน |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แบบนี้ครับ
เหอะๆ เก่งจังเลย
หาจนได้เนอะ
Code (PHP)
<?
$a[0]=1;
$a[1]=1;
$a[2]=3;
$a[3]=2;
$a[4]=3;
$a[5]=3;
$a[6]=3;
$a[7]=7;
$a[8]=7;
$a[9]=1;
$a[10]=1;
$b= array_unique ($a);
foreach($b as $value){
echo $value;
echo "<br>";
}
print_r($b);
?>
|
|
|
|
|
Date :
2009-03-24 17:20:38 |
By :
dr.website |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$a[0]=1;
$a[1]=1;
$a[2]=3;
$a[3]=2;
$a[4]=3;
$a[5]=3;
$a[6]=3;
$a[7]=7;
$a[8]=7;
$a[9]=1;
$a[10]=1;
$b= array_unique ($a);
$j= count($b);
ถ้าผมต้องการนำค่าที่ได้ออกไปเก็บ ในตัวแปล ที่เป็น array ธรรมดา
คือตัวแปลใช้ for ในการนวลูปได้อะครับต้องทำยังไง เช่น
for ($i=0;i<=$j;$i++){
echo $b[$i];
.
.
.
}
อะไรประมาณนี้ นะ ครับ พอจะทำได้รึเปล่าครับ
|
|
|
|
|
Date :
2009-03-24 17:38:14 |
By :
นักเรียน |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?
for ($i=0;i<=count($b);$i++)
{
echo $b[$i];
}
?>
|
|
|
|
|
Date :
2009-03-24 17:42:26 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำได้สิครับ
จิงทำแล้วลอง run ดูได้เลยผลลัพ ก็จะออกมาครับผม
|
|
|
|
|
Date :
2009-03-24 17:49:21 |
By :
dr.website |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code นี้อะครับ ผมรันแล้วผลลัพธ์ที่ได้ มันโชว์ไม่หมด นะครับ เป็นเพราะอะไรครับ ช่วยที่
<?
$a[0]=1;
$a[1]=1;
$a[2]=4;
$a[3]=2;
$a[4]=3;
$a[5]=3;
$a[6]=3;
$a[7]=9;
$a[8]=1;
$a[9]=7;
$a[10]=7;
$b= array_unique ($a);
$aa=count($b);
echo $aa."<br>";
for ($i=0;$i<=$aa;$i++) {
echo $b[$i];
}
?>
ผลลัพธ์คือ
6 .... คือจำนวนข้อมูลที่ไม่ซำกัน 6 ตัว
1423 .... มันแสดงแค่นี้เองครับ
แต่ถ้าผมใช้ for ($i=0;$i<=10;$i++) มันจะได้คำตอบ ที่ต้องการนะครับ
ช่วยอธิบายให้ฟังหน่อยนะครับ
หมายเหตุ
ข้อมูลที่เก็บใน array ผมไม่ต้องการให้มันแสดงผล แต่ ผมต้องการนำ ข้อมูลที่ได้ ไปQuery อีกที่หนึ่ง นะครับ
|
|
|
|
|
Date :
2009-03-24 19:12:24 |
By :
นักเรียน |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมคิดว่า(array_unique )มันลบข้อมูล ที่ซ้ำออกจริงครับ แต่ มันยังคงช่องนั้นไว้อยู่(เป็นช่องว่าง) ดังนั้น เรานำ array มาลบช่องที่ว่างๆ ออก ให้เลือกแต่ช่องที่มีข้อมูล ไม่รู้ที่พูดมาใช้ รึเปล่า วอนผู้รู้ช่วยอธิบายให้ฟังทีครับ
|
|
|
|
|
Date :
2009-03-24 19:19:12 |
By :
นักเรียน |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
array มาลบช่องที่ว่างๆ ออก ลองใช้ array_values() ดูค่ะ ถ้าจำไม่ผิดจะเป็นฟังก์ชั่นในการลำดับตำแน่งของอาเรย์ใหม่
กำจัด array ที่ซ้ำลอง ดูตัวอย่างนี้ค่ะ
<?
$datas=array("one", "two", "one", "three", "four", "two"); //array ที่ต้องการตรวจสอบ
$check= array(); //array สำหรับการตรวจสอบ
for ($i=0; $i<count($datas); $i++) {
$check[$datas[$i]]++; //mark array
if ($check[$datas[$i]]>1) echo "รายการ $datas[$i] ซ้ำกัน<br />";
}
?>
|
|
|
|
|
Date :
2009-03-24 19:31:40 |
By :
ioff |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เข้าใจถูกต้องแล้วครับ คือจะลบเฉพาะค่าที่ซ้ำแต่ตำแหน่งยังเหมือนเดิม
ถ้าเป็นผม ก็ สร้าง array ตัวใหม่ มารองรับ อ่ะคับ เป็นแบบนี้
Code (PHP)
<?
$a[0]=1;
$a[1]=1;
$a[2]=3;
$a[3]=2;
$a[4]=3;
$a[5]=3;
$a[6]=3;
$a[7]=7;
$a[8]=7;
$a[9]=1;
$a[10]=1;
$x=0;
$k = array();
$b= array_unique ($a);
foreach($b as $value){
$k[$x] = $value;
$x++;
}
print_r($k);
?>
|
|
|
|
|
Date :
2009-11-21 23:44:06 |
By :
hahaji |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ประมาณว่าผมมีข้อมูลจากฐานอยู่ครับตามรูป ค้องการที่จะนับว่ามี จำนวนแตละโดเมนเท่าไหร่ ผู้รู้ตอบที่ครับ
|
|
|
|
|
Date :
2016-07-09 21:59:10 |
By :
nolimitpx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอตอบไม่ได้กัน คนดูแลระบบไม่สนใจเลยทีเดียว 55555
|
|
|
|
|
Date :
2017-01-11 16:16:24 |
By :
ฟหกฟหก |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมมาให้แนวคิดนะ ไม่รู้ว่าถูกไหม ไปลองเอง
Code (PHP)
$parts = explode('@', "[email protected]");
$user = $parts[0];
$domain = "@" . $parts[1];
โค้ดข้างบนเป้นการสปริตโดเมนออกมา
แต่ข้อมูลคุณอยู่ใน DB ก็เป็น query แล้วเข้า while
จากนั้น ก็นำข้อมูล domain ไปยัดลงใน array จนกว่าจะหมด
จากนั้นคุณค่อยเช็ค duplicate array ก็น่าจะได้คำตอบแล้วมั้งงงงงงงงงง
|
|
|
|
|
Date :
2017-01-11 16:58:20 |
By :
limberger |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ group by โดเมน กับ count ใน sql ดึงค่าออกมาแสดงได้เลยครับ
|
|
|
|
|
Date :
2017-01-11 19:15:17 |
By :
tenten |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
array_unique( $a ) ==> ลบข้อมูลที่ซ้ำกันใน อาร์เรย์ ออก
sort($a) ==> จัดเรียง อินเด็ก อาร์เรย์ ใหม่
|
|
|
|
|
Date :
2017-02-17 14:49:32 |
By :
slingxer1156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<?
$a[0]=1;
$a[1]=1;
$a[2]=3;
$a[3]=2;
$a[4]=3;
$a[5]=3;
$a[6]=3;
$a[7]=7;
$a[8]=7;
$a[9]=1;
$a[10]=1;
$x=0;
$k = array();
$b= array_unique ($a);
foreach($b as $value){
$k[$x] = $value;
$x++;
}
print_r($k);
?>
และถ้าต้องการให้แสดงจำนวนรวมของค่าที่ซ้ำกันด้วยและ ค่าที่ไม่ซ้ำให้มีค่า 1 ต้องทำไงครับ ขอบคุณล่วงหน้าครับ
|
|
|
|
|
Date :
2018-02-06 10:51:42 |
By :
sawat123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$a=array(1,1,2,2,3,3,4,5);
$rs=array();
foreach($a as $x){
if(!isset($rs[$x])){ $rs[$x]=1; else $rs[$x]++;
}
print_r($rs);
|
|
|
|
|
Date :
2018-02-06 11:01:15 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ คุณ Chaidhanan
|
|
|
|
|
Date :
2018-02-06 11:19:28 |
By :
sawat123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<?php
$a=array('pepsi','coke','fanta','fanta','coke','coke','sprite');
$x=0;
$k = array();
$rs = array();
$b= array_unique ($a);
foreach($b as $value){
$k[$x] = $value;
$x++;
}
for($i=0; $i < count($k); $i++) {
print($k[$i]);
echo("<br>");
}
foreach($a as $x){
if(!isset($rs[$x])) {
$rs[$x]=1;
}
else {
$rs[$x]++;
}
}
print_r($rs);
?>
ผลลัพธ์จากโปรแกรมข้างบน
pepsi
coke
fanta
sprite
Array ( [pepsi] => 1 [coke] => 3 [fanta] => 2 [sprite] => 1 )
คำถามคือ ผมจะเอาค่าตัวเลขไปใส่ไว้ข้างหลัง ยี่ห้อน้ำได้ยังไงครับ เพราะค่า index เป็นชื่อยี้ห้อน้ำครับ อยากให้ผลลัพธ์แสดงดังนี้ครับ
pepsi 1
coke 3
fanta 2
sprite 1
|
|
|
|
|
Date :
2018-02-06 13:33:25 |
By :
sawat123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ประวัติการแก้ไข 2018-02-07 04:03:40 2018-02-07 04:03:44
|
|
|
|
Date :
2018-02-06 14:09:31 |
By :
sawat123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ศีกษาคำสั่ง foreach
|
|
|
|
|
Date :
2018-02-08 21:01:24 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|