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

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

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

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

กระทู้: 212



ดูรายละเอียด
« เมื่อ: 17 ตุลาคม 2020, 09:55:02 »

สอบถามการหาค่าซ้ำกันแล้วนำผลลัพธ์มาต่อท้ายครับ งมหลายชั่วโมงแล้ว ทั้งแยก Array เปรียบเทียบ index ก็ยังไม่ได้

$d="1-aaa,1-bbb,2-ccc,3-ddd,4-eee,4-fff,4-ggg,5-hhh,6-iii";
$e=explode(",",$d);
for($i=0;$i<count($e);$i++){
   echo $e[$i]."<br>";
}

ผลลัพธ์จะได้
โค๊ด:
1-aaa
1-bbb
2-ccc
3-ddd
4-eee
4-fff
4-ggg
5-hhh
6-iii

อยากได้ผลลัพธ์แบบนี้
โค๊ด:
1-aaa bbb
2-ccc
3-ddd
4-eee fff ggg
5-hhh
6-iii


ขอบคุณครับ
บันทึกการเข้า
esanza.com
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 3,673



ดูรายละเอียด
« ตอบ #1 เมื่อ: 17 ตุลาคม 2020, 10:32:10 »

แนะนำให้ใช้ foreach ครับ
ก่อนใช้ foreach เช็คดีๆว่ามันเป็นตัวแปร array จริงๆไหมและต้องไม่เท่ากับค่าว่าง
และแนะนำให้มองหลายๆมิติครับ


โค๊ด:
$d="1-aaa,1-bbb,2-ccc,3-ddd,4-eee,4-fff,4-ggg,5-hhh,6-iii";
$e=explode(",",$d);
/*for($i=0;$i<count($e);$i++){
   echo $e[$i]."<br>";
}*/
foreach ($e as $key1 => $value1) {
  $x='';
  $x=explode("-",$value1);
  $t[$x[0]][]=$x[1];
  //echo $x[0].' - '.$x[1].'<br />';
}
foreach ($t as $key2 => $value2) {
  echo '<br />'.$key2.' - ';
  if(is_array($value2)){
    foreach ($value2 as $key3 => $value3) {
      echo $value3.' ';
    }
  }
}
//print_r($t);
บันทึกการเข้า

ใครต้องการเช่าโฮสที่มี Control Panel ดีๆ
และ Support ดี แนะนำ => โฮสอะตอม
atikanzaa
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 3,453



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 17 ตุลาคม 2020, 11:20:25 »

ยังงี้ไม่รู้ใช่ที่ต้องการหรือเปล่าครับ

โค๊ด:
<?php
$d
="1-aaa,1-bbb,2-ccc,3-ddd,4-eee,4-fff,4-ggg,5-hhh,6-iii";
$e=explode(",",$d);
$array = [];
for(
$i=0$i count($e); $i++){
$array[$e[$i][0]] = '';
}
for(
$i=0$i count($e); $i++){
if(array_key_exists($e[$i][0],$array)){
$array[$e[$i][0]] .= explode("-",$e[$i])[1]. ' ';
}
}
foreach(
$array as $key => $value){
echo "$key - $value <br>";
}

บันทึกการเข้า

aon_cb
ก๊วนเสียว
*

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

กระทู้: 212



ดูรายละเอียด
« ตอบ #3 เมื่อ: 17 ตุลาคม 2020, 12:01:54 »

ขอบคุณทุกท่านมากครับ
บันทึกการเข้า
nscyber
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,165



ดูรายละเอียด
« ตอบ #4 เมื่อ: 17 ตุลาคม 2020, 12:09:38 »

โค๊ด:
$d     = "1-aaa,1-bbb,2-ccc,3-ddd,4-eee,4-fff,4-ggg,5-hhh,6-iii";
$array = array();
$e     = explode(",",$d);

//คัดแยกและจัดหมวดข้อความ
for($i=0;$i<count($e);$i++){
  for ($j=0; $j <= 9; $j++) {//วน 10 รอบ เพื่อหาตัวเลขที่เหมือนกันในข้อความ
    if(strpos($e[$i],$j.'')!==false){//หาตัวเลขที่เหมือนกันในข้อความ
      $array[$j][] = str_replace(array('0','1','2','3','4','5','6','7','8','9','-'),array('','','','','','','','','','',''),$e[$i]);//ลบตัวเลข และ - ออกจากข้อความแล้วบันทึกลง array เก็บแยกไว้
      break;//หยุดเมื่อเจอเลขแล้ว
    }
  }
}

//นำข้อความที่แยกไว้มาแสดง
foreach ($array as $key => $value) {
  echo $key.' ';//แสดงตัวเองก่อน
  foreach ($value as $val) {//นำตัวหนังสือที่ได้มาแสดงทั้งหมด
    echo $val.' ';
  }
  echo '<br>';
}
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์