Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
ServiceNow
public://topics-images/ytnrfphe_400x400.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png
Cloudflare
public://topics-images/cloudflare_logo.svg_.png
Samsung
public://topics-images/samsung.png
Google
public://topics-images/google_2015_logo.svg_.png
Uber
public://topics-images/uber.png
Microsoft 365
public://topics-images/m365.png
USA
public://topics-images/flag_of_the_united_states.svg_.png
GM
public://topics-images/0pe0po-z_400x400.jpg
Perplexity
public://topics-images/perplex.jpg
Xperia
public://topics-images/xperia.png
iOS 18
public://topics-images/ios-18-num-96x96_2x.png
True
public://topics-images/true_logo.png
SoftBank
public://topics-images/softbank.jpg
Pac-Man
public://topics-images/pacman.png
Harry Potter
public://topics-images/harry.png
Marvel
public://topics-images/marvel.png
Skydance
public://topics-images/skydance.png
SEA
public://topics-images/sealogo.png
Find Hub
public://topics-images/find.png
Gemini
public://topics-images/google_gemini_logo.svg__1.png
Accessibility
public://topics-images/accessibility-128x128_2x.png
Material Design
public://topics-images/m3-favicon-apple-touch.png
Android 16
public://topics-images/android16.png
Android
public://topics-images/android_0.png
Firefox
public://topics-images/firefox_logo-2019.svg_.png
Google Messages
public://topics-images/messages.png
Notepad
public://topics-images/notepad.png
Singapore
public://topics-images/flag_of_singapore.svg_.png
Airbnb
public://topics-images/airbnb.png
PS5
public://topics-images/ps5.png
Krafton
public://topics-images/krafton.png
Doom
public://topics-images/doom-game-s_logo.svg_.png
AMD
public://topics-images/amd_logo.svg_.png
GTA
public://topics-images/gta_0.png
DoorDash
public://topics-images/doordash.png
YouTube
public://topics-images/yt.png
YouTube Music
public://topics-images/yt-music.png
Facebook
public://topics-images/fb.png
iQiyi
public://topics-images/iqiyi_0.png
Viu
public://topics-images/viu.png
Amazon Prime Video
public://topics-images/prime-vid.png
Spotify
public://topics-images/spotify.jpg
Apple TV
public://topics-images/apple-tv.png
HBO Max
public://topics-images/max.png
Threads
public://topics-images/threads.png
Alexa
public://topics-images/alexa.png
Kindle App
public://topics-images/kindle.png
Shopee
public://topics-images/shopee.png
Waze
public://topics-images/waze.png
Bilibili
public://topics-images/bili.png
Google Maps
public://topics-images/maps.png
Apple Music
public://topics-images/apple-music.png
Claude
public://topics-images/claude.png
TikTok
public://topics-images/tiktok.png
Xbox
public://topics-images/xbox.png
Tesla
public://topics-images/tesla.png
Chrome
public://topics-images/chrome.png
Google Calendar
public://topics-images/gcal.png
Google Home
public://topics-images/ghome.png
Google Meet
public://topics-images/meet.png
NotebookLM
public://topics-images/notebooklm.png
Reddit
public://topics-images/reddit.png
Assassin’s Creed
public://topics-images/ac.png
Mark Zuckerberg
public://topics-images/zuck.jpg
Meta
public://topics-images/meta.png
Meta AI
public://topics-images/meta-ai.png
Epic Games
public://topics-images/epic_games_logo.svg_.png
Unreal
public://topics-images/unreal_engine_logo-new_typeface-svg.png
Fortnite
public://topics-images/fortnite.png
DeepMind
public://topics-images/deepmind.png
Databricks
public://topics-images/databricks.png
Netflix
public://topics-images/netflix-logo.png
Microsoft Azure
public://topics-images/azure.png
Microsoft Copilot
public://topics-images/microsoft_copilot_icon.svg_.png
Bing
public://topics-images/bing.png
EA
public://topics-images/ea.png
Intel
public://topics-images/intel.png
Amazon
public://topics-images/amazon.png
AWS
public://topics-images/aws.png
Zoom
public://topics-images/zoom.png
Dropbox
public://topics-images/dropbox_0.png
Roblox
public://topics-images/roblox.png
Dell Technologies
public://topics-images/dell-tech.png
Nothing
public://topics-images/nothing.svg_.png
Microsoft Teams
public://topics-images/teams.png
Mojang
public://topics-images/mojang.png
Minecraft
public://topics-images/minecraft.png
Redis
public://topics-images/redis_logo.svg_.png
Ubisoft
public://topics-images/ubisoft_logo.svg_.png
Elden Ring
public://topics-images/elden.png
Brave
public://topics-images/brave.png
Opera
public://topics-images/opera.png
Vivaldi
public://topics-images/vivaldi.png
Microsoft Edge
public://topics-images/edge.png
Duolingo
public://topics-images/duolingo.png
LinkedIn
public://topics-images/linkedin.png
Canva
public://topics-images/canva.png
Realme
public://topics-images/realme.png
NASA
public://topics-images/nasa-logo.png
Booking.com
public://topics-images/booking.png
Agoda
public://topics-images/agoda.png
Bolt
public://topics-images/bolt.png
Grab
public://topics-images/grab.png
Temu
public://topics-images/temnu.png
LINE
public://topics-images/line.png
Facebook Messenger
public://topics-images/messenger.png
WhatsApp
public://topics-images/whatsapp.png
Telegram
public://topics-images/telegram.png
Signal
public://topics-images/signal.png
X.com
public://topics-images/x.png
Grok
public://topics-images/grok.png
xAI
public://topics-images/xai.png
CapCut
public://topics-images/capcut.png
Edits
public://topics-images/edit.png
Google One
public://topics-images/gone.png
Tinder
public://topics-images/tinger.png
Whoscall
public://topics-images/whoscall.png
OneDrive
public://topics-images/onedrive.png
Lightroom
public://topics-images/lr.png
Meitu
public://topics-images/meitu.png
Outlook
public://topics-images/outlook.png
Excel
public://topics-images/excel.png
PowerPoint
public://topics-images/ppt.png
Microsoft Word
public://topics-images/word.png
Phone Link
public://topics-images/phone-link.png
OneNote
public://topics-images/onenote.png
Windows App
public://topics-images/windows-app.png
Notion
public://topics-images/notion.png
Google Drive
public://topics-images/drive.png
YouTube Kids
public://topics-images/yt-kids.png
Gboard
public://topics-images/gboard.png
DeepSeek
public://topics-images/deepseek_logo.svg_.png
Prince of Persia
public://topics-images/prince-persia.png
Sony
public://topics-images/nq0nd2c0_400x400.jpg
Cisco
public://topics-images/jmyca1yn_400x400.jpg
Alibaba
public://topics-images/4axflwia_400x400.jpg
Alibaba Cloud
public://topics-images/qm43orjx_400x400_cloud.png
Coinbase
public://topics-images/consumer_wordmark.png
CarPlay
public://topics-images/carplay.png
Rust
public://topics-images/rust-logo-blk.png
Red Hat
public://topics-images/redhat.png
Anthropic
public://topics-images/anthropic.png
Xcode
public://topics-images/xcode.png
Tim Cook
public://topics-images/tim-cook.jpg
Donald Trump
public://topics-images/trump.jpg
Microsoft Surface
public://topics-images/surface.jpg
Copilot+ PC
public://topics-images/copilotpc.png
Stellar Blade
public://topics-images/stellar-blade.jpg
Snapdragon
public://topics-images/snapdragon_chip.png
Qualcomm
public://topics-images/qualcomm-logo.svg_.png
CoreWeave
public://topics-images/coreweave.png
Ford
public://topics-images/ford.png
Xiaomi
public://topics-images/xiaomi.png
Google Cloud
public://topics-images/google_cloud_logo.svg_.png
PlayStation Network
public://topics-images/psn.png
PlayStation Plus
public://topics-images/ps-plus.png
Windsurf
public://topics-images/windsurf.png
Square Enix
public://topics-images/square-enix.png
MIT
public://topics-images/x7hyjl3t_400x400.jpg
Zoox
public://topics-images/zoox.jpg
Evernote
public://topics-images/1neatidg_400x400.jpg
Magic the Gathering
public://topics-images/magic.png
Call of Duty
public://topics-images/cod.png
NVIDIA
public://topics-images/nvidia_logo.svg_.png
Satya Nadella
public://topics-images/nadella.png
Nintendo
public://topics-images/nintendo.png
Japan
public://topics-images/japan_flag.png
China
public://topics-images/china-flag-sq.png
Sam Altman
public://topics-images/sam-altman.png
SNK
public://topics-images/snk_logo.svg_.png
EPYC
public://topics-images/epyc.png
HPE
public://topics-images/hpe.png
Juniper
public://topics-images/juniper.png
CMA
public://topics-images/cma.png
App Store
public://topics-images/app-store.png
DoJ
public://topics-images/doj.png
Siri
public://topics-images/siri.png
Apple Intelligence
public://topics-images/apple-intelligence.png
Acer
public://topics-images/acer.png
GeForce
public://topics-images/geforce.png
Omen
public://topics-images/omen.png
HP
public://topics-images/hp.png
Alienware
public://topics-images/alienware.png
Dell
public://topics-images/dell.png
Bungie
public://topics-images/bungie.png
Marathon
public://topics-images/marathon.png
Lenovo
public://topics-images/lenovo-2015-svg.png
Intel Arc
public://topics-images/badge-arc-graphics.png
GitHub
public://topics-images/8zfrryja_400x400.png
GitHub Copilot
public://topics-images/copilot.png
Foxconn
public://topics-images/foxconn_0.png
Visual Studio
public://topics-images/vs.png
Visual Studio Code
public://topics-images/vscode.png
WSL
public://topics-images/wsl.png
Linux
public://topics-images/linux.png
Tencent
public://topics-images/tencent_logo_2017.svg_.png
Entra
public://topics-images/microsoft_entra_id_color_icon.svg_.png
RHEL
public://topics-images/rhel-icon.png
MSI
public://topics-images/msi-logo-for_digital_use_b.png
MCP
public://topics-images/mcp.png
Docker
public://topics-images/docker.png
RISC-V
public://topics-images/risc-v-logo.svg_.png
Fedora
public://topics-images/fedora.png
ASUS
public://topics-images/asus.png
ROG
public://topics-images/rog-logo_red.png
Naughty Dog
public://topics-images/naughty-dog.png
AIS
public://topics-images/357073423_657473419752809_8491928084596189631_n.png
National Telecom
public://topics-images/nt.jpg
Elon Musk
public://topics-images/elon_musk_2015_0.jpg
OpenShift
public://topics-images/openshift-logotype.svg-0.png
ศึกษา Data Structure ครับ
tukzazaza Sat, 03/31/2012 - 20:46
ศึกษา Data Structure ครับ Array มันเป็นพื้นฐาน
จะแทรกอะไรแบบนั้น ลองดูพวก List ครับ ไม่รู้ PHP มีหรือป่าว ไม่ถนัดครับ
คือผมหมายถึง
nevermore Sat, 03/31/2012 - 21:23
คือผมหมายถึง สาเหตุที่ไม่สามารถแทรกเข้าไปได้อ่ะครับ
บางที ที่มันไม่มี
heart Sat, 03/31/2012 - 22:14
In reply to คือผมหมายถึง by nevermore
บางที ที่มันไม่มี ก็เพราะมันแค่ไม่มี
แต่ว่าเราก็ยังสามารถทำได้ด้วยคำสั่งอื่นๆหลายคำสั่งแทน
ทำให้ไม่มีการพัฒนาจุดนั้นขึ้นมา
คงไม่มีเหตุผลเชิงวิชาการหรอกครับ ว่าทำไมถึงไม่มี
อันที่จริงภาษาโปรแกรมทุกภาษา ก็มีอีกหลายอย่าง ที่ไม่มี และก็ไม่มีเหตุผลเชิงวิชาการมาบอก ว่าทำไมถึงไม่มี
แต่โดยทั่วไป เราก็ใช้คำสั่งอื่นๆ มาประยุกต์เพื่อให้สามารถได้ผลลัพธ์ที่ต้องการได้
หากใครเขียน PHP มานานๆจะรุ้ว่า PHP มักจะมีคำสั่งสำเร็จรูปอยู่จำนวนมาก (ยกตัวอย่างเช่น mail() )
ซึ่งถ้าถามว่า ภาษาอื่นทำไมถึงไม่มีหละ คำตอบก็คือ ก็เพราะแค่มันไม่มีเฉยๆ
หลายๆคำสั่งใน PHP นั้น สามารถทำงานได้ด้วยคำสั่งเดียว แต่ในอีกหลายภาษานั้นก็ไม่มีคำสั่งสำเร็จรูปแบบ PHP
สรุปแล้ว ผมว่า ที่มันไม่มี ก็เพราะแค่ว่า มันไม่มี เฉยๆ
+1 บางอย่างไม่ใช่ทำไม่ได้
mementototem Sat, 03/31/2012 - 22:58
In reply to บางที ที่มันไม่มี by heart
+1
บางอย่างไม่ใช่ทำไม่ได้ แต่ไม่ทำ เพราะไม่อยากทำ และไม่เห็นความจำเป็นต้องทำ
+1
incredibles Sun, 04/01/2012 - 19:36
In reply to บางที ที่มันไม่มี by heart
+1 อยากให้พวกที่เถียงกันว่าภาษาไหนดีกว่ากันมาอ่าน comment นี้จัง
ผมก็คิดไปไกล ไปโน่น
nevermore Sat, 03/31/2012 - 23:13
ผมก็คิดไปไกล ไปโน่น เกี่ยวกับเรื่องหน่วยความจำ
คิดไกลไปหน่อยใช่มั้ยครับ
ลอง unset($ar[2]); ดูครับ
lancaster Sat, 03/31/2012 - 23:19
ลอง unset($ar[2]); ดูครับ
ถ้าไม่เอาเรื่อง data
mibtrex Sat, 03/31/2012 - 23:21
ถ้าไม่เอาเรื่อง data structure ก็คงต้องพูดกันในเรื่องของ compiler ครับ ว่าการออกแบบตัวแปรชนิด array มันเป็นการจอง memory ของข้อมูลในตำแหน่งของ address ที่ติดกัน เพราะฉะนั้น การที่จะเอาออกแบบนั้นมันจะทำให้ เกิดช่องว่างระหว่าง address ซึ่งถ้าจะให้เรียง index ใหม่ ก็ต้องขยับข้อมูลเอาไปแทนที่ข้อมูลเดิมที่เอาออก
ปัญหามันจะอยู่ตรงที่ถ้าข้อมูลเรายาวมากๆ การขยับแต่ละครั้งมันจะเปลือง performance มากๆ ก็เลยมีการคิดการเก็บข้อมูลอย่างอื่นเช่นพวก linklist ทำให้เอาออก หรือแทรกได้โดยไม่เปลือง performance มากนัก
ขอเพิ่มเติมแล้วกันครับ ถ้าเป็
PiKO Sat, 03/31/2012 - 23:43
ขอเพิ่มเติมแล้วกันครับ
ถ้าเป็น Array ในภาษา C มันจะเป็น Memory ผืนเดียวกันยาวๆ เพราะฉะนั้น การแทรกกลาง หรือการลบเฉพาะแค่ตรงกลาง มันไม่ค่อยสมเหตุสมผลเท่าไหร่ครับ และ PHP ก็อาจจะได้ผลมาจากคนที่เคยเขียนภาษา C จะรู้สึกแปลกๆ ที่จะแทรกข้อมูลลงไปใน Array ก็เลยไม่มีก็เป็นได้ :)
แต่สำหรับ PHP แค่ลบใช้รู้สึกจะใช้ unset() ตามคุณ lancaster บอกได้
เหตุผล (ที่ไม่ใช่เชิง data
neizod Sun, 04/01/2012 - 02:55
เหตุผล (ที่ไม่ใช่เชิง data structure) คือ คนสร้างภาษาเค้าไม่ได้ใช้ฟังก์ชันนั้น เลยไม่ได้เขียนไว้ให้เราใช้ครับ
ผมยกตัวอย่าง Python ที่ไม่มีข้อมูลแบบ array ให้ใช้ แต่มี list ซึ่งสามารถทำงานได้เหมือนกัน และน่าจะมีความสามารถอย่างที่คุณถาม
{syntaxhighlighter class="brush: python"}
l = ['a', 'b', 'd', 'e']
l[2:2] = ['c']
print(l)
get: ['a', 'b', 'c', 'd', 'e']
l[1:2] = []
print(l)
get: ['a', 'c', 'd', 'e']
{/syntaxhighlighter}
ถ้าตามความคิดผม คำสั่งใน C
heart Sun, 04/01/2012 - 03:03
ถ้าตามความคิดผม
คำสั่งใน C แต่ละคำสั่ง ก็ถูกแปลงเป็นภาษาเครื่องอยู่แล้ว ซึ่งคำสั่งจาก C หนึ่งคำสั่งนั้น
อาจจะถูกแปลงเป็นภาษาเครื่อง หลายคำสั่งรวมกันก็ได้
(assembly Move ไป Move มา หลายๆครั้งรวมๆกัน เป็นเรื่องปรกติอยู่แล้ว)
ดังนั้น ถ้า C จะทำคำสั่งให้สามารถแทรก array ได้ก็ไม่ใช่เรื่องยาก
และหาก C มีคำสั่งนั้นจริงๆ คำสั่งนั้น มันก็จะทำงานเร็วกว่าการใช้คำสั่งหลายๆคำสั่งใน C มารวมกัน
เพื่อประยุกต์ให้แก้ปัญหานี้ได้ แน่นอน
เพราะว่า ถ้าภาษา C หนึ่งคำสั่ง แปลงเป็นภาษาเครื่องชุดเล็กๆ
น่าจะรวมแล้วเล็กกว่า คำสั่ง C หลายๆคำสั่งรวมกัน
ดังนั้นเหตุผลว่า เพราะเปลืองทรัพยากร คงจะไม่ใช่ หรือความยากในการเขียน ก็คงจะไม่ใช่
เพราะผมรับรองว่า คำสั่ง for , if , while นั้นแปลงเป็นภาษาเครื่อง ยุ่งยากกว่าการย้าย array แน่นอน
เหตุผลที่ไม่มีก็คือ นักพัฒนาไม่สามารถทำทุกอย่างได้
ไม่เช่นนั้น นักพัฒนาอาจจะต้องใช้เวลาเป็นสิบปี เพื่อเก็บตกคำสั่งเล็กน้อยทั้งหมดไม่ว่ามันจะคืออะไรก็ตามแต่
แต่การพัฒนาคำสั่งพื้นฐาน ที่สามารถนำมาประยุกต์ได้หลากหลายนั้น น่าจะเป็นทางเลือกที่ดีที่สุด
แต่ภาษาในปัจจุบัน เช่น C# หรือ C++ หรือ Java นั้นก็ถูกพัฒนามาจากการเรียนรู้ในอดีต
หลายๆฟังชั่น ที่อดีตไม่เคยมี โปรแกรมเมอร์ในอดีตต้องใช้คำสั่งที่ยุ่งยาก เพื่อแก้ปัญหา
พอมาถึงยุคใหม่ ก็ถูกแทนที่ด้วยคำสั่งใหม่ที่มาแก้ปัญหาเหล่านั้น
ผมเชื่อว่า หากคุณพิสูจน์ได้ว่า คำสั่งแทรก array ตรงกลางนั้น ควรค่าแก่การถูกพัฒนาขึ้นมาจริงๆ
ภาษาในยุคต่อไป ก็จะมีคำสั่งนี้แน่นอน
จะทำให้มันเรียงข้อมูลทุกครั้ง
soginal Sun, 04/01/2012 - 04:19
จะทำให้มันเรียงข้อมูลทุกครั้งที่ add ข้อมูลใหม่ไปก็ได้ครับ แต่มันจะมีกระบวนการเพิ่มขึ้นมากกว่าเดิมและทำให้ช้าลงเมื่อข้อมูลมีจำนวนมาก และ object (เช่นพวก class, struct, array) จะไม่สามารถ sort ได้อย่างถูกต้อง โปรแกรมเมอร์ต้องเป็นคนใส่เงื่อนไขการ sort เข้าไปเอง
ดังนั้นจึงไม่ได้ใส่กระบวนการเรียงข้อมูลเข้าไปใน array หากต้องการ sort ก็เรียกใช้ function สำหรับ sort เอาเองจะดีกว่า
อนึ่ง ผมคิวว่าคงจะป่วยการ
neizod Sun, 04/01/2012 - 04:36
อนึ่ง ผมคิวว่าคงจะป่วยการ ถ้าจะพูดกันเรื่องนี้ทั้งที แต่กลัว data structure (จะกลัวไปทำไม?)
array แต่เดิมในภาษา C นั้น (เหมือนที่คุณ PiKO อธิบาย) เป็นการเก็บข้อมูลชุดหลายๆ ตัวอย่างง่ายที่สุด มันเกิดจากการจองพื้นที่เป็นบล๊อกติดๆ กันไว้จำนวนหนึ่ง แล้วก็ใส่ข้อมูลอย่างเรียงลำดับลงไปในแต่ละบล๊อก ส่วนตัวแปรต้นของมันนั้นจะเก็บที่อยู่ของบล๊อกแรกสุดเอาไว้ ถ้าเราต้องการเข้าไปหาข้อมูลที่ตัวไหน ก็เอาที่อยู่แรกสุด มาบวกเพิ่มกับขนาดของบล๊อกที่เราจะไป เราก็จะเจอข้อมูลตัวที่เราหานั่นเอง
แต่การ implement แบบนี้ ก็มีข้อเสียที่การเอาข้อมูลตัวตรงกลางๆ ออกใช้เวลามาก เพราะเราไม่สามารถปล่อยให้เหลือช่องว่างอยู่ภายใน array ได้ จึงมี linked list ขึ้นมา ซึ่งคราวนี้บล๊อกแต่ละบล๊อกไม่จำเป็นต้องอยู่ใกล้กันแล้ว แต่บล๊อกต่างๆ จะเก็บข้อมูลเพิ่มขึ้นมาคือที่อยู่ของตัวถัดไป ถ้าเราต้องการเข้าไปหาตัวลึกๆ จะเสียเวลามากหน่อยเพราะต้องเริ่มเข้าตั้งแต่ต้นทาง แล้วก็ถามหาตัวถัดไปเรื่อยๆ ข้อดีของวิธีนี้คือ การเอาตัวกลางๆ ออกจะเร็ว เพราะเราก็แค่บอกตัวก่อนหน้าให้เปลี่ยนที่อยู่ชี้ไปยังตัวถัดไปจากเราซะ ไม่ต้องเลื่อนตัวที่เหลือให้เขยือบเข้ามา
จากข้อเสียของ linked list ที่แม้จะเอาตัวกลางๆ ออกได้ไวก็จริง แต่การเข้าไปหาตัวกลางๆ ก็กินเวลามาก (เพราะเราไม่รู้ว่ามันอยู่ตรงไหนกันแน่จนกว่าจะถามทางตัวแรกสุดมาจนครบ) ก็มีวิธี implement แบบ hash table ขึ้นมา ซึ่งมันรับประกันความเร็วในการเข้าถึงข้อมูลตัวต่างๆ ว่าจะใช้เวลาเท่ากันหมด โดยมันจะนำชื่อที่อยู่ที่เราอ่านออก (เช่น ตำแหน่งที่ 0, 1, 2, a, b, c...) ไปเข้าอัลกอริทึม hash ซึ่งจะให้ผลออกมาเป็นตัวเลขที่ดูเหมือนว่ามั่วๆ สะเปะสะปะ (เช่น 0 -> 15, 1 -> 7, 2 -> 13, a -> 8) แล้วก็เก็บข้อมูลลงไปเหมือนกับ array ธรรมดาที่ยอมมีช่องว่างของตัวที่ไม่ใช้
แต่ข้อเสียของ hash table คือ ข้อมูลในนั้นจะไม่ถูกจดจำอย่างเรียงลำดับ (โดยคอมพิวเตอร์) เช่น เวลาเราพูดถึง 0 คอมพิวเตอร์จะมองเห็นว่ามันอยู่ตำแหน่งที่ 15 แทน
และนี่ก็น่าจะเป็นฝันร้ายของ PHP โปรแกรมเมอร์ เพราะ array ใน PHP แท้จริงแล้วมันคือ hash table นั่นเอง แม้ว่าเราจะ unset index ตำแหน่งตรงกลางๆ ของ array ไปแล้ว แต่กลับกลายเป็นว่าช่องนั้นจะโหว่ไปเลย index ตัวที่มากกว่าจะไม่ถูกเลื่อนลงมาให้ครับ
เยอะเลย.......ความรู้ทั้งนั้น
nevermore Sun, 04/01/2012 - 22:28
เยอะเลย.......ความรู้ทั้งนั้น บางอย่างผมก็ไม่เคยทราบจริงๆ
ขอบคุณทุกท่านมากครับ
ไม่แน่ใจว่าเข้าใจถูกหรือเปล่า
eakjaa Sun, 04/01/2012 - 22:44
ไม่แน่ใจว่าเข้าใจถูกหรือเปล่า php จะมีคำสั่งให้สามารถเพิ่ม แทนที่หรือลบค่าใน array ที่อยู่ตรงกลางได้ครับ คือ array_splice()
http://th.php.net/manual/en/function.array-splice.php
ถ้าไม่ตรงกับที่ต้องการต้องขอโทษด้วยนะครับ
แหม่ ....
PaPaSEK Mon, 04/02/2012 - 10:28
In reply to ไม่แน่ใจว่าเข้าใจถูกหรือเปล่า by eakjaa
แหม่ .... กำลังจะมาพิมพ์เลยครับ :P array_splice() นี่คนรู้จักน้อย ยิ่งถ้าไม่เคยเปิด reference เลยก็ไม่รู้จักแน่นอน
ฝากถึงคุณ nevermore ผมไม่รู้ว่าผมสอนจระเข้ว่ายน้ำหรือเปล่า
ผมอ่าน PHP reference เป็นงานอดิเรก ... แล้วก็ภาษาอื่นๆ ที่ผมต้องใช้ด้วย ฟังก์ชันบางอย่างมันมี แต่คุณไม่รู้ บางอย่างก็ไม่มีต้องใช้ workaround ช่วยครับ
ใน PHP reference ยังมีตัวอย่างดีๆ พร้อมคำอธิบายที่มาที่ไปของ argument (so, my argument is never invalid) ถ้าอ่านให้ครบๆ (อ้างอิง, see also, link ในส่วนต่างๆ ฯลฯ) จะเข้าใจการทำงานของฟังก์ชันต่างๆ เป็นอย่างดีอีกด้วยครับ
array_splice()
nevermore Mon, 04/02/2012 - 16:57
In reply to แหม่ .... by PaPaSEK
array_splice() ผมไม่เคยใช้จริงๆ นะ เพิ่งจะเห็นนะครับ
Mannual ผมเข้าเป็นปกติตลอดเลย แต่ไม่เคยเปิดดูเลย ส่วนใหญ่ก็ใช้แต่เดิมๆ ตลอด
ลองเปิดดูฟังก์ชั่นเกี่ยวกับ
PaPaSEK Tue, 04/03/2012 - 14:55
In reply to array_splice() by nevermore
ลองเปิดดูฟังก์ชั่นเกี่ยวกับ array ทั้งหมดดูครับ ไล่อ่านทีละอันเลย
PHP มีฟังก์ชันหยุมหยิม ยิบย่อยให้ใช้งานเยอะมากครับ
ล่าสุดผมเพิ่งจะได้ใช้
nevermore Tue, 04/03/2012 - 18:53
In reply to ลองเปิดดูฟังก์ชั่นเกี่ยวกับ by PaPaSEK
ล่าสุดผมเพิ่งจะได้ใช้ preg_replace_callback() เพิ่งจะรู้ว่ามันมีอีกด้วย
"ทำไมถึงไม่มีคำสั่งเอาออกในตำ
Invisible Force Mon, 04/02/2012 - 17:04
"ทำไมถึงไม่มีคำสั่งเอาออกในตำแหน่งนั้นๆ โดยตรง และเรียง index ให้เลยครับ"
สั้นๆ คือ เรื่องประสิทธิภาพของโปรแกรมครับ (ซึ่งจะเห็นชัดเมื่อมีการใช้งานบ่อยๆ หรือ ใชักับข้อมูลขนาดใหญ่)
เราสามารถที่จะเขียนฟังก์ชั่นขึ้นมาเฉพาะเพื่ออำนวยความสะดวกในการเรียกใช้งานง่ายๆ ตามที่ตัวอย่างนี้ต้องการก็ได้ครับ .. ซึ่งถ้าเขียนใช้เองมันก็ไม่มีปัญหาอะไร .. แต่ถ้าดันเขียนแล้วปล่อยเผยแพร่ให้คนอื่นใช้ มันก็ต้องมี algorithm ที่ดีหน่อยมันจะได้ไม่อายเค้าครับ ^^
คนมาตอบกันเยอะมาก ^^
boykeng Wed, 04/04/2012 - 18:22
คนมาตอบกันเยอะมาก ^^