ถามปัญหา PHP หน่อยคับ เกี่ยวกับ array

เริ่มโดย giffary, 14 ธันวาคม 2009, 21:53:33

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

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

giffary

คือผมต้องการเก็บข้อมูลบุคคลลงใน 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 ด้วยจักขอบคุณอย่างยิ่งคับ

pomchai


ttong

ผมก็ได้แค่เบื้องต้นนะครับ เป็นผมจะเก็บเป็น
$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

ข้อ 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 แล้วครับ
[direct=http://www.signmate.co]Digital Signage[/direct],  [direct=http://www.signmate.co]ป้ายโฆษณาดิจิตอล[/direct],
[direct=https://www.signnex.com]Digital Signage[/direct][direct=http://www.keeate.com]App Creator[/direct],
[direct=http://www.keeate.com]รับทำแอพ[/direct]

pugkung

อ้างถึง$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

ข้อ 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;

}
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

@@@

อ้างถึงจาก: genetic ใน 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 แล้วครับ


ใช่เลยครับ
รับซื้อเว็บ 100uip ต่อวันขึ้นไป [direct=http://www.rommit.com/forex]EA Forex[/direct]

utalert


giffary

อ้างถึงจาก: utalert ใน 15 ธันวาคม 2009, 11:36:56
ขอโทษนะครับ การบ้านเหรอ

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