Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Paano Mag-Sort ng Arrays sa PHP

by
Difficulty:BeginnerLength:LongLanguages:

Tagalog (Wikang Tagalog) translation by Anna Nelson (you can also view the original English article)

Madalas ay mas madaling kumuha ng partikular na bahagi ng impormasyon mula sa naka sort na data, kung hindi ay kailangan mong isa-isahin ang bawat element ng paisa-isa. Halimbawa, sabihin na natin mayroon kang nakatagong marka ng iba’t ibang estudyante sa isang klase sa array o table. Kapag ang data ay hindi naka sort sa pamamagitan ng mga markang nakuha, kailangang mong tingnan ang marka ng bawat estudyante sa klase bago mo masabi kung sino ang nakakuha ng pinakamataas at pinakamababang marka. Kung ang table ay nakaayos na sa mababa pataas batay sa marka, sa simpleng pagtingin sa marka ng unang estudyante masasabi mo na ang pinakamababang marka.

Ang pagso-sort ay nagagawang napakadali at napakabilis ng maraming gawain na kinakailangan ng paga-access o pagkuha ng partikular na set ng data.Sa pagtuturong ito, matututunan natin kung paano gumamit ng built-in PHP functions para i-sort ang iba’t ibang uri ng array.

Pagso-sort ng Array Sa Pamamagitan ng Value

Ang pagso-sort ng array sa pamamagitan ng value ng elements nito ay napakadali sa PHP. Maaari kang mamili na panatilihin o tanggalin ang key-value associations, at maaari mo ring tukuyin ang iyong sariling functions para sabihin kung paano ang elements naso-sort. Ipapakita ko kung paano sa bahaging ito ng pagtuturo.

Maaari mong gamitin ang sort(&$array, $sort_flags) na function para ayusin ang values ng array mula sa mababa pataas.Gayunpaman, hindi nito mapapanatili ang kahit na anong key-value associations kapag sino-sort ang array. Ang bagong keys ay nakatalaga sa nasort na elements sa halip na simpleng pag-aayos uli.Sa opsyonal na pangalawang parameter ay matutukoy mo kung paano i-sort ang elements. Maaari itong magkaroon ng anim na iba’t ibang values:

  1. SORT_REGULAR—Maso-sort nito ang values ng hindi na kailangang baguhin ang kanilang types.
  2. SORT_NUMERIC—Iso-sort nito ang values sa pamamagitan ng pagkumpara sa mga ito ayon sa bilang.
  3. SORT_STRING—Iso-sort nito ang values sa pamamagitan ng pagkukumpara sa mga ito bilang strings.
  4. SORT_LOCALE_STRING—Ikukumpara nito ang values bilang string batay sa kasalukuyang locale. Maaari mo ring i-update ang locale ng ikaw lang gamit ang setlocale().
  5. SORT_NATURAL—Iso-sort nito ang items gamit ang “natural ordering” habang kinukumpara ang mga ito bilang strings.
  6. SORT_FLAG_CASE—Maaari itong pagsamahin gamit ang SORT_STRING o SORT_NATURAL para i-turn off ang case-sensitivity habang sino-sort ang strings.

Narito ang ilang halimbawa ng pagso-sort para tulungan kang mabilis na maintindihan ang pagkakaiba sa pagitan ng lahat ng sort flags.

Sa halimbawa, sa regular sorting, ang numerical strings ay binabalik sa kanilang numerical values at ang pagso-sort ay nagagawa ng naaayon dito. Ang string na “Apple” ay non-numeric kung kaya hindi ito nagagalaw at naikukumpara bilang string.

Sa pangalawang halimbawa, numeric sorting, gusto natin ang data na ma-sort batay sa numerica value kung kaya ang “Apple” ay binabalik sa numeric value 0 at nauuna. At ang natitirang values ay sino-sort katulad ng inaasahan.

Sa pangatlong halimbawa, lahat ng values ay tinuturing na strings. Ibig sabihin na sa halip na ikinukumpara ang numerical value ng 123 o 3249832 sa 38, kinukumpara sila bilang strings, paisa-isang character lang. Dahil ang “1”ay nauuna sa “3”, ang value123 ay tinuturing na mas mababa sa 38.

Kung gusto mong i-sort ang iyong array values mula sa mataas pababa sa halip na mula sa mababa pataas, maaari mo itong gawin sa tulong ng rsort() function. Tinatanggap nito ang lahat ng parehong parameters bilang sort() subalit sino-sort ang values ng pabaliktad. Hindi rin nito napapanatili ang kahit na anong key-value associations, kung kaya hindi ito ang tamang piliin sa pag-sort ng associative arrays.

I-sort ang Associative Array

Ang key value associations ay nagiging mahalaga kapag ikaw ay gumagawa ng may associative arrays. Tingnan ang sumusunod na halimbawa kung saan ang associative array ay ginagamit para itago ang pangalan ng iba’t ibang tao at ang kanilang paboritong prutas. Kung gusto mong i-sort ang listahan ayon sa alpabeto sa pamamagitan ng pangalan ng mga prutas, gamit ang sort() function mula sa nakaraang bahagi ay magreresulta ito sa pagkawala ng associative keys.

Makikita mo na hindi lang natin nawala ang kaugnayan ng mga tao sa kanilang paboritong prutas, nawala din natin ang mga pangalan ng iba’t ibang tao. Bawat na-sort na value ay may nakatalagang bagong numeric index batay sa posisyon nito sa na-sort na array.

Para matulungan ka kung paano ang gagawin sa problemang ito ng mabilis, ang PHP ay may dalawang iba’t ibang functions kung saan pinapatili nito ang key-value association habang sino-sort ang arrays ayon sa kanilang values. Ang dalawang functions ay assort() at arsort(). Ang sumusunod na code snippet ay sino-sort ang parehong $fruit_preferences array subalit gumagamit ng assort() para magawa ito.

Maliwanag mula sa halimbawa sa itaas, ang value na Apple ay gumagalaw sa itaas habang pinapanatili nito ang kaugnayan kay Patricia. Ang pangalan ng prutas ay maaaring i-sort ng pabaliktad ng mabilis sa pamamagitan ng paggami ng arsort() function.

Ang parehong functions ay tinatanggap ang parehong sorting flags bilang value ng opsyonal na pangalawang parameters bilang sort() at rsort().

Pag Sort ng Array Elements Sa Pamamagitan ng Value Sa User-Defined Functions

Ang apat na sorting functions ay madaling matutugunan ang iyong karaniwang kailangan sa pagso-sort sa tulong ng iba’t ibang flags. Gayunpaman, minsan ang iyong pamantayan sa pagkukumpara ng array elements ay maaaring iba.

Sabihin na natin na mayroon kang array ng random na mga salita na kailangang i-sort ayon sa alpabeto. Gayunpaman, gusto mo ding i-sort ang mga ito batay sa kanilang haba bago i-sort ang mga ito ayon sa alpabeto. Halimbawa, ang zoo ay mapupunta pagkatapos ng apple sa tradisyunal na pagso-sort ayon sa alpabeto. Gayunpaman, kung nais mong ipakita ang maiiksing salita bago ang mahahaba, ang zoo ay lalabas bago ang apple. Sa parehong set ng mga letra, ang ape ay mapupunta bago ang zoo dahil sa pagkakasunud-sunod na ayon sa alpabeto.

Sa katunayan, ang mga salita ay dating sino-sort batay sa kanilang haba at pagkatapos ang mga salitang may parehong bilang ng mga letra ay sino-sort ayon sa alpabeto sa loob ng kanilang sariling grupo. Ang ganitong uri ng pagso-sort ay hindi bahagi ng PHP kung kaya kailangan nating magsulat ng ating sariling sorting function.

Ang ginagawa ng PHP sa pagkakataong ito ay ang bigyan ka ng ilang functions na maaaring gamitin para ipasa ang array na gusto mong i-sort kasama ang ilang pangalan ng iyong sariling sorting function.

Maaari mo ring gamitin ang usort() function para i-sort ang array values sa regular arrays. At kapareho din nito, uasort() function para i-sort ang values sa associative arrays habang pinapanatili ang key-value associations.

Ang code snippet sa ibaba ay ipinapakita ang isang paraan para matupad ang gawaing ito.

Sa callback functions na para sa custom sorting, kailangan nating ibalik ang integer na mas mababa sa 0 para ipahiwatig na ang unang value ay mas mababa kaysa sa pangalawa. Ibalik ang 0 kung ang unang value ay kapareho ng sa pangalawa. Ibalik ang integer na mas mataas sa 0 kung ang unang value ay mas mataas kaysa sa pangalawa.

Dahil ang ating pangunahing sorting criteria ay string length, direkta nating ibabalik ang -1 kung ang unang salita ay mas maiksi kaysa sa pangalawa. At gayon din, direkta nating ibabalik ang 1 kapag ang unang salita ay mas mahaba kaysa sa pangalawa. Kapag ang dalawang salita ay magkapareho ng haba, kinukumpara natin ang mga ito ayon sa alpabeto gamit ang strcmp() function at ibinabalik ang value nito.

Katulad ng makikita mo sa output, ang ating custom sort function ay inaayos uli ang mga salita eksakto sa gusto natin.

Pagso-sort ng Array Sa Pamamagitan ng Key

Ang pag-sort ng array batay sa keys nito ay karaniwan ng mahalaga kapag ikaw ay gumagawa ng may associative arrays. Halimbawa, maaaring mayroon kang array na may impormasyon tungkol sa kabuuang bilang ng paliparan sa iba’t ibang bansa. Ipalagay na natin na ang mga pangalan ng iba’t ibang bansa ay keys at ang bilang ng paliparan ay values, maaarin gusto mong i-sort ang mga pangalan ng bansa ayon sa alpabeto.Napakadali nitong gawin sa functions ksort() and krsort(). Ang parehong functions na ito ay pananatilihin ang key-value association ng array elements pagkatapos ng pagso-sort. Ang function ksort() ay magso-sort ng keys mula sa mababa pataas at ang krsort() ay magso-sort ng keys mula sa mataas pababa.

Narito ang pangunahing halimbawa ng sorting:

Maaari mo ring gawin sa PHP ng kahit wala ang iyong sariling custom function function sa pag sort ng array keys gamit ang uksort() function. Katulad ng usort(), sa callback uksort() function kailangan mong ibalik ang integer na mas mababa kaysa 0 kung ang unang key ay tinuturing na mas mababa kaysa sa pangalawa at ang integer ay mas mataas kaysa 0 kung ang unang key ay mas mataas kaysa sa pangalawa. Pinapanatili din ng function na ito ang key-value association ng array elements.

Sa halimbawa sa itaas, ginamit natin ang custom sort function galing sa nakaraang bahagi para i-sort ang pangalan ng mga bansa una sa pamamagitan ng haba ng kanilang pangalan at ayon sa alpabeto.

Pag-sort ng Multi-Dimensional Arrays sa PHP

Mas karaniwan sa totoong buhay na may gawin gamit ang multi-dimensional na impormasyon. Halimbawa, ang institusyon ay itatago ang mga marka ng lahat ng mga estudyante sa iba’t ibang paksa sa isang table sa halip na gumawa ng bagong tables para sa bawat paksa. Kung itatago mo ang parehong impormasyon sa PHP, gagawin mo din ito gamit ang multi-dimensional array sa halip na hiwalay na array para sa bawat paksa.

Sa pagtuturong ito, matututunan mo kung paano mag-sort ng multi-dimensional array gamit ang listahan ng pinakamataas na gusali sa mundo bilang halimbawa. An gating array maglalaman ng impormasyon tungkol sa pangalan ng gusali, lungsod at bansa kung saan ito matatagpuan, bilang ng palapag at kabuuang taas sa metro kasama din ang taon kung kalian ito nagawa.

Kung gusto mong i-sort ang values sa multi-dimensional array batay sa partikular na field, maaari mo lang gamitin ang usort() function. Ang halimbawa sa ibaba ay sana nakakatulong sa iyo na mas maintindihan ang pamamaraang ito.

Sa halimbawa sa itaas, ang impormasyon tungkl sa bawat gusali ay nakatago sa sarili nitong array sa loob ng pangunahing $tallest_buildings array. Ang storey_sort() function ay nagbabawas lamang ng bilang ng palapag sa pangalawang gusali mula sa una para matukoy kung aling gusali ang mas maliit ayon sa ating pamantayan. Hindi natin kailangang mag-alala tungkol sa pagbabalik ng particular na negative o positive value dahil lahat ng negative values ay nangangahulugan ng mas maliit at lahat ng positive values ay nangangahulugan ng mas malaki.

Sa huli, kailangan lang natin ulitin sa pangunahing array at i-print out ang impormasyon tungkol sa bawat gusali.

Pagtatapos

Sa pagtuturong ito, ipinakita ko ang ilang iba’t ibang functions sa PHP na magagamit sa pag sort ng arrays alinman sa pamamagitan ng kanilang keys o ng kanilang values. Natutunan din natin kung paano mag-sort ng array sa pamamagitan ng keys o values nito gamit ang ating sariling custom sorting na pamantayan sa tulong ng uksrot() and uasort() functions. Tinalakay sa panghuling bahagi kung paano mag sort ng lahat ng values sa multi-dimensional arrays gamit lang ang partikular na field.

Sana ay may natutunan kang bago mula sa pagtuturong ito. Kung mayroon kang kahit na anong tanong o mungkahi ipagbigay-alam sa akin sa comments. Ang pinakamagandang paraan ay ang subukan at gumawa ng ilang iyong sariling halimbawa, pag-sort ng arrays gamit ang function na ito.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.