เมนูหลัก

[php]sort

เริ่มโดย GillBate, 28 พฤษภาคม 2010, 17:36:10

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

GillBate

 :P คิดมาสองวันแล้วครับ ปวดหัวจริงๆ คิดไม่ออก จะเอาข้อมูลออกมาจาก sort อ่ะครับ


        $array[1]['name'] = $member[1]['name'];
$array[1]['battle'] = $member[1]['battle'];
$array[2]['name'] = $member[2]['name'];
$array[2]['battle'] = $member[2]['battle'];
$array[3]['name'] = $member[3]['name'];
$array[3]['battle'] = $member[3]['battle'];
$array[4]['name'] = $e[1]['name'];
$array[4]['battle'] = $e[1]['battle'];
$array[5]['name'] = $e[2]['name'];
$array[5]['battle'] = $e[2]['battle'];
$array[6]['name'] = $e[3]['name'];
$array[6]['battle'] = $e[3]['battle'];


เรื่องของเรื่องคือผมต้องการเรียงว่าใครมีค่า battle มากกว่ากัน เรียงออกมาแล้วจะเอาชื่อคนนั้นออกมาใช้งานอ่ะครับ
งงเรื่อง array อย่างแรง ช่วยหน่อยครับ

Bone

ทำไม ไม่้ใช้ array[name][battle] = 1254(ค่า) แหละครับ
เฟอร์นิเจอร์ http://www.kssfurniture.com
เฟอร์นิเจอร์สำนักงาน http://www.officetou.com
เดือนภัยระวังโดนหลอก http://vichitrochwo.blogspot.com/

woratana

แบบง่าย ๆ นะครับ

ใช้ Algorithm Bubble Sort แบบที่สอนกันในวิชา Computer Programming ของมหาลัยอะครับ  :P
ลองดูฮะ  :wanwan017:
[direct=http://www.designil.com/contact-us]DesignIL เรียนเทคนิคเว็บดีไซน์ใหม่ ๆ ฟรี!! รับทำเว็บไซต์ เว็บดีไซน์ ธีม WordPress
[direct=http://www.designil.com/]DesigNIL: สอนออกแบบเว็บไซด์ Web Design HTML5 CSS3
[/direct]

GillBate

อ้างถึงจาก: woratana ใน 28 พฤษภาคม 2010, 17:50:23
แบบง่าย ๆ นะครับ

ใช้ Algorithm Bubble Sort แบบที่สอนกันในวิชา Computer Programming ของมหาลัยอะครับ  :P
ลองดูฮะ  :wanwan017:
:P มันไม่ง่ายตรงที่ไม่เคยเรียนนี่แหละครับ

ohmohm

ใช้ usort()
ตัวอย่าง ( ไม่รู้ต้องการแบบนี้หรือเปล่า )

<?php
$member[1]['name'] = 'usr001';
$member[1]['battle'] = 100 ;
$member[2]['name'] = 'usr002';
$member[2]['battle'] = 300 ;
$member[3]['name'] = 'usr003';
$member[3]['battle'] = 200 ;
$member[4]['name'] = 'usr004';
$member[4]['battle'] = 100 ;

echo '<pre>';
print_r $member );
echo '</pre>';

function mycmp($a$b)
{
return $a['battle'] - $b['battle'] ;
}

usort$member'mycmp' );

echo '<hr /><pre>';
print_r $member );
echo '</pre>';

?>


รายละเอียด php sorts แบบต่างๆ http://www.php.net/manual/en/array.sorting.php

ิีิbubble sort ก็คือสอง loops ลูปแรกพยายามหาสมาชิกที่มีค่ามากสุุด มาไว้ท้าย จึงทำลูปซ้อนเพื่อสลับตำแหน่งไปเรื่อยๆ เพื่อเอาตัวมากสุดไปขวา ลูปต่อมาก็หาค่ามากสุดรองลงมา มาไว้ตำแหน่งรองลงมาเช่นกัน
แต่ใช้ quick sort หรือ merge sort ดีกว่า หาหนังสือ หรืออ่านเว็บ Com Sci หน่อยก็ดีนะครับ สำหรับโครงการอันยิ่งใหญ่
http://www.youtube.com/watch?v=pNkbHmIlhkU

woratana

เยี่ยมเลยครับท่าน ohmohm

สำหรับคุณ GillBate ยังไงก็ลองศึกษาพวกนี้ไว้นะครับ ระบบต่อสู้ถ้าจำให้ sort แบบเทพ ๆ ก็ต้องลองดูพวกนี้แหละครับ  :wanwan017:
[direct=http://www.designil.com/contact-us]DesignIL เรียนเทคนิคเว็บดีไซน์ใหม่ ๆ ฟรี!! รับทำเว็บไซต์ เว็บดีไซน์ ธีม WordPress
[direct=http://www.designil.com/]DesigNIL: สอนออกแบบเว็บไซด์ Web Design HTML5 CSS3
[/direct]

GillBate

 :P ขอบคุณทุกท่านครับ ลืมบอกไปว่าทำได้แล้ว

//arrannge battle!
$data[] = array('battle' => $member[1]['battle'], 'name' => $member[1]['name']);
$data[] = array('battle' => $member[2]['battle'], 'name' => $member[2]['name']);
$data[] = array('battle' => $member[3]['battle'], 'name' => $member[3]['name']);
$data[] = array('battle' => $e[1]['battle'], 'name' => $e[1]['name']);
$data[] = array('battle' => $e[2]['battle'], 'name' => $e[2]['name']);
$data[] = array('battle' => $e[3]['battle'], 'name' => $e[3]['name']);

//usage (only enter the keys you want sorted):


// Obtain a list of columns
foreach ($data as $key => $row) {
$battle[$key]  = $row['battle'];
$name[$key] = $row['name'];
}

// Sort the data with volume descending, edition ascending
// Add $data as the last parameter, to sort by the common key
$sorted = array_multisort($battle, SORT_DESC, $name, SORT_ASC, $data);