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

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

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

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

กระทู้: 325



ดูรายละเอียด เว็บไซต์
« เมื่อ: 14 ธันวาคม 2009, 21:53:33 »

คือผมต้องการเก็บข้อมูลบุคคลลงใน array คับ

โดยข้อมูลที่ต้องการเก็บมีลักษณะแบบนี้

1. ประกอบด้วยข้อมูล 3 อย่าง คือ
humanId HumanName HumanPoint

2. สามารถมี human ได้หลายคนครับ แต่ละคนที่ Id name point ที่ต่างกัน เช่น

humanId HumanName HumanPoint
1001John1
1002Tom3
1003Alex2
.........

3. ผมสามารถอัพเดทข้อมูลของแต่ละคนได้คับ เช่นอยากให้ point ของ Tom เป็น 5 ไรอย่างนี้คับ

4. ข้อมูลผมนำมาใส่ผมจะดึงออกมาจาก Database ก่อนนะคับ

5. ขอตัวอย่าง code ที่จะช่วยให้ผม sort ข้อมูลของผมเรียงจาก point มากไปน้อยด้วยนะคับ

ขอความช่วยเหลือด้วยคับ ขอบคุณมากครับ

ปล.ข้อ 3 ผมขอตัวอย่าง code ด้วยจักขอบคุณอย่างยิ่งคับ
« แก้ไขครั้งสุดท้าย: 14 ธันวาคม 2009, 21:55:24 โดย giffary » บันทึกการเข้า

pomchai
สมุนแก๊งเสียว
*

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

กระทู้: 841



ดูรายละเอียด
« ตอบ #1 เมื่อ: 15 ธันวาคม 2009, 08:11:46 »

มากางมุ้ง รอ
บันทึกการเข้า
ttong
สมุนแก๊งเสียว
*

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

กระทู้: 633



ดูรายละเอียด
« ตอบ #2 เมื่อ: 15 ธันวาคม 2009, 08:45:58 »

ผมก็ได้แค่เบื้องต้นนะครับ เป็นผมจะเก็บเป็น
โค๊ด:
$arr_human_id=array("1001","1002","1003");
$arr_human_name=array("John","Tom","Alex");
$arr_human_point=array("1","3","2");

ข้อ 3 จะแก้ point ของ Tom ก็ให้หาตำแหน่งของ Tom โดยใช้คำสั่ง
โค๊ด:
$index=array_search("tom",$arr_human_name);
// จะได้ 1 แล้วเราก็ไปแก้ให้
$arr_human_point[$index]=5;

ข้อ 5 จะเรียงลำดับจากมากไปน้อย น่าจะใช้คำสั่ง
โค๊ด:
rsort($arr_human_point);
บันทึกการเข้า

genetic
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,703



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 15 ธันวาคม 2009, 09:11:37 »

ข้อ 1, 2
$human[0] = array("humanId" => 1001, "HumanName" => "John", "HumanPoint" => 1);
$human[1] = array("humanId" => 1002, "HumanName" => "Tom", "HumanPoint" => 3);
$human[2] = array("humanId" => 1003, "HumanName" => "Alex", "HumanPoint" => 2);


หรือ ถ้าคิดว่า humanId เป็น key ที่จะเป็นตัวบ่งบอกว่าจะแก้ข้อมูลให้ใคร ก็ใช้ humanId เป็น index แทน
$human[1001] = array("HumanName" => "John", "HumanPoint" => 1);
$human[1002] = array("HumanName" => "Tom", "HumanPoint" => 3);
$human[1003] = array("HumanName" => "Alex", "HumanPoint" => 2);

ข้อ 3
ในกรณีที่ต้องอัพเดทคะแนนคนที่มีรหัส humanId เป็น 1001 ก็เป็น
$human[1001]["HumanPoint"] = 10;

ข้อ 4 ก็วนลูปเก็บในอะเรย์แบบข้อหนึ่งครับ เช่น
while($row = mysql_fetch_array($rs)) {
   $human[$row['humanId']] = array ("HumanName" => $row['HumanName'],
               "HumanPoint" => $row['HumanPoint']);
}

ก็จะได้แบบข้อ 1 แล้วครับ
บันทึกการเข้า

pugkung
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,681



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 15 ธันวาคม 2009, 10:15:51 »

อ้างถึง
$human[1001] = array("HumanName" => "John", "HumanPoint" => 1);
$human[1002] = array("HumanName" => "Tom", "HumanPoint" => 3);
$human[1003] = array("HumanName" => "Alex", "HumanPoint" => 2);

ข้อ 3
ในกรณีที่ต้องอัพเดทคะแนนคนที่มีรหัส humanId เป็น 1001 ก็เป็น
$human[1001]["HumanPoint"] = 10;

สนับสนุนวิธีนี้ครับ  wanwan017
บันทึกการเข้า

ball6847
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,174



ดูรายละเอียด
« ตอบ #5 เมื่อ: 15 ธันวาคม 2009, 10:26:11 »

ข้อ 5

โค๊ด:
<?php

// http://php.net/manual/en/function.usort.php
usort($human 'sort_by_point');


function 
sort_by_point($a $b)
{

    if (
$a['HumanPoint'] == $b['HumanPoint'])
    {
        return 
0;
    }

    return (
$a['HumanPoint'] < $b['HumanPoint']) ? -1;

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

@@@
Administrator
สมุนแก๊งเสียว
*

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

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 15 ธันวาคม 2009, 11:22:21 »

ข้อ 1, 2
$human[0] = array("humanId" => 1001, "HumanName" => "John", "HumanPoint" => 1);
$human[1] = array("humanId" => 1002, "HumanName" => "Tom", "HumanPoint" => 3);
$human[2] = array("humanId" => 1003, "HumanName" => "Alex", "HumanPoint" => 2);


หรือ ถ้าคิดว่า humanId เป็น key ที่จะเป็นตัวบ่งบอกว่าจะแก้ข้อมูลให้ใคร ก็ใช้ humanId เป็น index แทน
$human[1001] = array("HumanName" => "John", "HumanPoint" => 1);
$human[1002] = array("HumanName" => "Tom", "HumanPoint" => 3);
$human[1003] = array("HumanName" => "Alex", "HumanPoint" => 2);

ข้อ 3
ในกรณีที่ต้องอัพเดทคะแนนคนที่มีรหัส humanId เป็น 1001 ก็เป็น
$human[1001]["HumanPoint"] = 10;

ข้อ 4 ก็วนลูปเก็บในอะเรย์แบบข้อหนึ่งครับ เช่น
while($row = mysql_fetch_array($rs)) {
   $human[$row['humanId']] = array ("HumanName" => $row['HumanName'],
               "HumanPoint" => $row['HumanPoint']);
}

ก็จะได้แบบข้อ 1 แล้วครับ


ใช่เลยครับ
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
utalert
ก๊วนเสียว
*

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

กระทู้: 314



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 15 ธันวาคม 2009, 11:36:56 »

ขอโทษนะครับ การบ้านเหรอ
บันทึกการเข้า

giffary
Verified Seller
ก๊วนเสียว
*

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

กระทู้: 325



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 15 ธันวาคม 2009, 12:33:58 »

ขอโทษนะครับ การบ้านเหรอ

ป่าวคับ เป็นหนึ่งในงานของโปรเจคจบครับ ผมจะทำระบบ matching ช่างภาพหน่ะครับ
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์