មេរៀនទី៥: PHP- Array


1. What Is an Array?
អ្នកក៏បានស្គាល់រួចមកហើយអំពី variable ដែលត្រូវគេប្រើដើម្បីផ្ទុកនូវតំលៃផ្សេងៗ ។ ដោយការប្រើប្រាស់ variable អ្នកក៏អាចបង្កើតជា script អោយប្រតិបត្ដិការ ឬ បង្ហាញជា ពត៌មានផ្សេងៗនៅរាល់ពេលដែលអ្នកតំណើរការវា ប៉ុន្ដែគួរអោយ
សោកស្ដាយ ដោយអ្នកអាច រក្សាទុកនូវតំលៃតែមួយប៉ុណ្ណោះក្នុងពេលតែមួយ និង ក្នុង variable មួយ ។
Array គឺជា variable ពិសេសដែលអនុញ្ញាតអោយអ្នក ផ្ទុកនូវតំលៃបានច្រើននៅក្នុង variable មួយ ។ រាល់តំលៃនិមួយៗត្រូវបានរក្សាទុកនៅក្នុង index របស់ array ដែលអាច ជាលេខ ឬ ជា តួអក្សរ ។ ជា default ធាតុរបស់ array ដែលជា index គឺចាប់ផ្ដើមពីលេខ ០ ។ ហេតុអ្វីបានជាត្រូវប្រើប្រាស់ array ?
ប្រសិនបើអ្នកមានតំលៃចំនួន ៥ ដែលត្រូវរក្សារទុក នោះអ្នកប្រាកដជាត្រូវបង្កើត variable ចំនួនប្រាំផងដែរArray គឺ flexible ព្រោះវាអាចផ្ទុកតំលៃបានពីរ ឬ ពីររយ តំលៃ ដោយពុំ មានការង្កើតនូវvariableថីទៀតហើយ array ក៏អាចអោយអ្នកធ្វើការជា
មួយតំលៃរបស់ វា បានយ៉ាងងាយ ដូចជា ការ loop ធាតុរបស់ array និមួយៗ ឬ តំរាបធាតុរបស់វាទៅលំដាប់នៃលេខរៀង ឬ ជាតួអក្សរ ទៅតាមការកំនត់នៅក្នុង system របស់អ្នក ។ ខាងក្រោមគឺជាការបង្ហាញនូវធាតុរបស់ users array ដែលមានធាតុទី៤ ជា index ទី៣ នៃ users ។
a
PHP ក៏បានផ្ដល់នូវលទ្ធភាពដើម្បីរៀបចំនូវ indexed របស់ array ដោយការប្រើប្រាស់ទាំង លេខ និង អក្សរផងដែរ។
2. Creating Arrays . អ្នកអាចបង្កើតនូវ array variable ដោយប្រេិវិធីពីរយ៉ាងគឺ ការប្រើប្រាស់ array() construct ឬ ការប្រើប្រាស់នូវសញ្ញា square brackets ( [ ] ) ។ 2.1 Defining Arrays with the array() Construct.
array()construct វាមានសារៈប្រយោជន៍នៅពេលដែលអ្នកចង់ផ្ដល់តំលៃច្រើនទៅអោយ array ក្នុងពេលតែមួយ។
ខាងក្រោមគឺឧទាហរណ៍នៃការបង្កើត array មួយដែលមានឈោះថា $users ហើយយើងបានផ្ដល់តំលៃជា string ចំនួនបួន
តំលៃទៅអោយវា ។
$users = array (“Sok”, “Sao”, “Mata”, “Mesa”);
ឥឡូវនេះអ្នកអាចយកធាតុរបស់ $users មកប្រើប្រាស់ដោយការប្រើប្រាស់ index របស់ array
print $users[2];
លទ្ធផលនៃឧទាហរណ៍ខាងលើនឹង បង្ហាញជាអក្សរ Mata ដែល index របស់វាហើយត្រូវបានដាក់នៅចន្លោះ square brackets ( [2] ) បន្ទាប់ពីឈោះរបស់ array ( $users ) ។
2.2 Defining or Adding to Arrays with the Array Identifier.
អ្នកអាចបង្កើត array ថី ឬ បន្ថែមតំលៃទៅអោយ array បានដោយការប្រើប្រាស់នូវ array Identifier
array identifier គឺជាបន្ដុំនៃ squre brackets និង index របស់វា ជាលេខ ឬ ជាឈោះ។ខាងក្រោមជា ឧទាហរណ៍នៃការបង្កើត $users array ដោយប្រើវីធីសាស្ដ្រមួយផ្សេងទៀត ។
$users[] = ” Sok”;
$users[] = ” Sao”;
$users[] = ” Dara”;
$users[] = ” Mesa”;
ឧទាហរណ៍ខាងលើមិនទាមទារអោយអ្នកដាក់នូវតំលៃលេខដែលជា index នៅចន្លោះ square Brackets នោះឡើយ ព្រោះ PHP នឹងផ្ដល់តំលៃ index ដោយស្វ័យប្រវត្ដិទៅអោយ array ។ ម្យ៉ាងវិញទៀតអ្នកក៏អាចដាក់នូវតំលៃជា index របស់ array បានផងដែរ ប៉ុន្ដែមិន មានការគាំទ្រ អោយធ្វើបែបនេះនោះទេសូមពិនិត្យមើល ការសរសេរកូដខាងក្រោមៈ
$users[0] = “Phanit”; .
$users[200] = “Ratana”;
Array ខាងលើមានធាតុត្រឹមតែពីរប៉ុណ្ណោះ ប៉ុន្ដែ index ចុងក្រោយរបស់វាគឺជា index ទី២០០ PHP នឹងមិនកំនត
តំលៃធាតុទៅអោយ index ដែលនៅចន្លោះ នោះឡើយ ដែលធ្វើអោយ មានការភាន់ច្រឡំ នៅពេល ដែលចង់ព្យាយាមយកធាតុ ដែលមានក្នុង array នោះមកប្រើ ខណៈពេលដែលអ្នកចង់ប្រើនូវ ធាតុរបស់ វា ណាមួយទៅតាមចិត្ដរបស់អ្នក។ សំរាប់ការបង្កើត array អ្នកអាចប្រើ នូវ array() contstruct រួច ប្រើនូវ array identifier ដើម្បីបន្ថែមនូវធាតុថμីទៀតក៏បាន ។
សូមពិនិត្យឧទាហរណ៍ខាងក្រោម ៖
$users = array (“Sok”, “Sao”, “Mata”, “Mesa”); .
$users[] = “Menear”; .
3. Populating an Array with array_fill() .ប្រសិនបើអ្នកចង់ដាក់នូវតំលៃជា default នៅចន្លោះនៃ index array នោះអ្នកប្រហែលជាប្រើនូវ array() function ដូចខាងក្រោម ។
$member = array (“cambodia”, “cambodia”, “cambodia”,”cambodia “); .ឬ អ្នកអាចប្រើប្រាស់នូវ array ម្យ៉ាងទៀតដូចជា
$member[] = “Cambodia”; .
$member[] = “Cambodia”; .
$member[] = “Cambodia”;.
$member[] = “Cambodia”; .
PHP បានផ្ដល់នូវ function ដើម្បីដោះស្រាយនូវបញ្ហានេះដោយប្រើនូវ array_fill() function ដែលតំរូវអោយអ្នកផ្ដល់នូវ arguments ចំនួន៣សំរាប់ function នេះ ទី១គឺជាតំលៃ index ដែលចាប់ផ្ដើម
ទីពីគឺជា ចំនួនធាតុដែលអ្នកចង់បាន ហើយ argument ទី៣ គឺជាតំលៃដែលអ្នកត្រូវផ្ដល់អោយជាធាតុរបស់Array ។
ដោយការប្រើប្រាស់នូវ array_fill() function អ្នកអាចសរសេរនូវបំណែកកូដខាងលើឡើងវិញ ដូចខាងក្រោម ៖
$member = array_fill( 0, 4, “Cambodia” ); .
ឧទាហរណ៍ៈ ២៤
$member = array_fill(0,4,”Cambodia”);
$member[] = “Malaysia”;
print $users[2];
?>
4. Associative Arrays .
Assosciate array គឺជា array ដែលប្រើប្រាស់នូវ index ជាអក្សរនៅ ចន្លោះ squqre braketsអ្នកអាចបង្កើតនូវ assosciate array ដោយ array construct( array() )ឬ array identifier (array[])
ឧទាហរណ៍
$character = array(“name” => “Sok”, .
“occupation” => “Student”,
“age” => 12,
“Adr” => “Phnom Pehn” );
ឥឡូវនេះយើងអាចប្រើប្រាស់នូវធាតុ array របស់ $character ដូចខាងក្រោមៈ
print $character['occupation']; .
keys ដែលនៅក្នុង assosciate array គឺជា string ដូច្នេះ engine នឹងបង្ហាញរបាយការណ៍ error ប្រសិនបើ keys នៃ array មិនមាន quoted ។ ដូច្នេះអ្នកគួរតែប្រើនូវ quotation marks នៅពេលដែលអ្នកប្រើkeys នៃ array ជា string ។
print $character[occupation]; // មិនត្រឹមត្រូវ
print $character["occupation"]; // ត្រឹមត្រូវ
ប្រសិនបើ key ត្រូវផ្ទុកនៅក្នុង variable នោះ អ្នកមិនចាំបាច់ត្រូវប្រើ quotation mark នោះឡើយ ។
$occ = “occupation”; .
print $character[$occ]; // ត្រឹមត្រូវ
4.1 Directly Defining or Adding to an Associative Array . អ្នកអាចបង្កើត ឬ បន្ថែម ឈោះ/តំលៃ ទៅអោយ associate array ដោយការផ្ដល់នូវតំលៃទៅអោយឈោះនៃធាតុរបស់ array ដួចខាងក្រោម ។
$character["name"] = “sok”; .
$character["occupation"] = “Programmer”; .
$character["age"] = 30; .
$character["address"] = “Phnom Penh”;.
5. Getting the Size of an Array .
count() function ផ្ដល់នូវចំនួនធាតុរបស់ array ដែលមាន បំណែកកូដខាងក្រោមយើងបានប្រើប្រាស់ នូវ count()function ដើម្បីយកធាតុចុងក្រោយនៃ array $users មកប្រើ ។
$users = array (“Sambath”, “Ratana”, “Davy”, “Ryda” ); .
print $users[count($users)-1]; .
ឧទាហរណ៍ ២៦



Getting size of array

Getting size of array


$users[]=”Sok”;
$users[]=”Som”;
$users[]=”Mom”;
$users[]=”Mab”;
print “
”.count($users);
?>

ចំណាំ ៖ count() ផ្ដល់តំលៃនៃចំនួនសរុបរបស់ធាតុ array មិនមែនជាតំលៃនៃ index ចុងក្រោយនោះទេ ។
ឧទាហរណ៍ខាងក្រោមនេះគឺការបង្កើត array ដោយការផ្ដល់នូវ index ទៅអោយ array ដោយខ្លួនអ្នក
$users[35] =”Sok”;
$users[52] =”Som”;
$users[890] =”Mom”;
$users[52]=”Mab”;
count() នៅតែផ្ដល់នូវចំនួនសរុបនៃធាតុ array ដដែល គឺមានចំនួន ៤ ធាតុ ។ ហើយអ្នកក៏អាចទទួលនូវ
ធាតុរបស់ array ចុងក្រោយបានដោយការប្រើនូវ end() function ដែលទាមទារត្រឹមតែ argument
មួយ ប៉ុណ្ណោះ ។ ឧទាហរណ៍ print end($users);
6. Looping Through an Array . foreach statement គឺជាវិធីសាស្ដ្រមួយយ៉ាងប្រសើរដើម្បី loop រាល់ធាតុនិមួយៗដែលមាននៅ ក្នុង array ។
អ្នកអាចប្រើប្រាស់នូវ foreach statement ដូចខាងក្រោម ៖
foreach( $arr as $temp )
{
//………….
}.
$arr គឺជា array ដែលអ្នកត្រូវ loop ហើយ $temp គឺជា variableដែលអ្នកនឹងត្រូវរក្សារទុកជាបណ្ដោះអាសន្ន នូវធាតុនិមួយៗ ក្នុងគ្រា loop ។ កូដខាងក្រោមគឺជាការបង្កើត array មួយហើយយើង ប្រើ foreach statement ដើម្បីយកធាតុនិមួយៗមក បង្ហាញលើ browser ។
ឧទាហរណ៍ ២៦


Looping throught array


Looping througth array


$users = array (“Sok”, “Som”, “Mab”, “Mab” );
foreach ( $users as $val )
{
print “$val
”;
}
?>


ឧទាហរណ៍ ២៧


Looping throught array


Looping througth array


$users[]=”Sok”;
$users[]=”Som”;
$users[]=”Mom”;
$users[]=”Mab”;
foreach( $user as $val )
{
print “$val
}
?>


6.1 Looping Through an Associative Array .
ដើម្បីប្រើប្រាស់នូវ foreach statement ជាមួយ assosciat array ទាំង keys និង values អ្នកអាចប្រើប្រាស់ជាមួយនឹង foreach statement ដូចខាងក្រោម ៖
foreach( $arr as $key=>$value ) .
{
//…..
}
$arr គឺជា array ដែលយើងនឹងត្រូវ loop ហើយ $key គឺជា variable ដែលផ្ទុកនូវ key និមួយៗជាបណ្ដោះអាសន្ន ហើយ $val គឺជា variable ដែលផ្ទុកនូវ value របស់ array និមួយៗជាបណ្ដោះអាសន្នក្នុងគ្រា loop ម្ដងៗ ។
ឧទហរណ៍ ២៨
 
 
  Looping thought associate array


 

Looping thought associate array



 
  $character = array (“name” => “Sao”,
  “occupation” => “Student”,
  “age” => 12,
 “Adr” => “Phnom Pehn”);

 foreach ( $character as $key=>$val )
  {
  print “$key = $val
”;
  }

  ?>

 
 
Arrayដែលបានបង្កើតនៅបន្ទាត់ទី១១ ហើយប្រើប្រាស់នូវ foreach statement នៅបន្ទាត់ទី ១៥
ដើម្បី loop នូវធាតុដែលជាតំលៃ និង key របស់វា ។ រាល់ key និមួយត្រូវបានផ្ទុកនៅក្នុង variable ដែល ផ្ដល់ឈេμាះអោយថា $key និង រាល់ value និមួយៗត្រូវបានផ្ទុកនៅក្នុង variable ដែលផ្ដល់ឈេμាះថា $val
ហើយត្រូវបានបង្ហាញជាលទ្ធផលទៅកាន់ browser នៅបន្ទាត់ទី ១៧ ។
a
7. Joining Two Arrays with array_merge() .
array_merge() មានតួនាទីផ្គុំនូវធាតុរបស់ array ពីរ ឬ array ច្រើនបញ្ជូលគ្នា រួចផ្ដល់ជា Array ថμីមួយទៀតដែលជាបន្ដុំនៃធាតុ array ទាំងអស់នោះ។ ឧទាហរណ៍ខាងក្រោមគឺជា ឧទាហរណ៍នៃ ការបង្កើតនូវ array ពីរ គឺ array $arr1 និង array $arr2 ហើយធ្វើការបញ្ចូលគ្នារវាងធាតុនៃ array ទាំងពីររួចផ្ដល់តំលៃទាំងនោះទៅអោយ $arr3 បន្ទាប់មក loop រាល់ធាតុដែលមាននៅក្នុង $arr3 ។
ឧទាហរណ៍ ២៩
array_merge.php .


Joining Two array with array_merge()


Using array_merge()


$arr1 = array(“a”, “b”, “c”);
$arr2 = array(1,2,3);
$arr3 = array_merge( $arr1,$arr2 );
foreach ( $arr3 as $val )
{
print “$val
”;
}
?>


$arr3 array ផ្ទុកនូវរាល់ធាតុដែលមាននៅក្នុង $arr1 និង $arr2 array ។ foreach statement
នឹងបង្ហាញនូវបន្ដុំនៃធាតុ array ( ‘a’, ‘b’, ‘c’, 1, 2, 3 ) ជាមួយនឹង
នៅចន្លោះធាតុនិមួយៗ ។
8. Adding Multiple Variables to an Array .
array_push()ទទួលយកនូវ array និង តំលៃផ្សេងពី parameters ដែលតំលៃទាំងនោះ គឺជាធាតុ ដែលនឹងត្រូវបន្ថែមទៅអោយ array ។ array_push() function មិនមានលក្ខណៈដូច array_merge() នោះទេ ពីព្រោះ array ដែលបញ្ជូនទៅជា argument ដំបូងនឹងត្រូវប្រែប្រួល ហើយ array_push() នឹង ផ្ដល់មកវិញនូវតំលៃសរុបទាំងអស
់ដែលមាននៅក្នុង array នោះវិញ ។
ឧទាហរណ៍ ៣០
 



 
 $arr1 = array (“a”, “b”, “c”);
  $total = array_push( $arr1,1,2,3);
 print “There are $total elements in \$arr1 “;

  foreach ( $arr1 as $val )
  {
  print “$val
”;
 }

  ?>



ឥឡូវនេះ $arr1 បានបន្ថែមនូវធាតុជា integer ចំនួនបីធាតុ ដែលបានមកពីការប្រើប្រាស់នូវ array_push() function ដូច្នេះ $arr1 ផ្ទុកនូវតំលៃសរុបចំនួន ៦ ធាតុហើយត្រូវបាន បង្ហាញនូវ ធាតុនិមួយៗទៅកាន់ browser ដោយកូដដែលមាននៅក្នុង foreach statement ។
ចំណាំៈ យើងបានប្រើនូវ backslash ពេលដែល print ជា string “——\$arr1″ នៅបន្ទាត់ទី ១០
ប្រសិនបើអ្នកប្រើនូវ និមិត្ដសញ្ញានៅពីមុខពាក្យ ឬ ឃ្លាណាមួយនោះ PHP នឹងបញ្ចូលជាតំលៃទៅ អោយ ទៅតាមឈោះ variable ។ ឧទាហរណ៍ ខាងលើយើងចង់បង្ហាញនូវ string ‘$arr1′ ដែលមិនមែនជា តំលៃរបស់ variable នោះទេ ដូច្នេះដើម្បី print នូវ special character ($) យើងត្រូវតែប្រើនូវ backslash (\)
នៅពីមុខ ។ ប្រសិនបើអ្នកចង់បន្ថែមធាតុទៅអោយ array ហើយជាធាតុដំបូងទៀតនោះ អ្នកអាចប្រើប្រាស់ជាមួយនឹង array_unsift() ។
ឧទាហរណ៍ ៣១


Using array_unsift()


Using array_unsift()


$arr1 = array (“a”, “b”, “c”);
$total = array_unshift( $arr1, 1, 2, 3 );
print “There are $total elements in \$arr1 “;
foreach ( $arr1 as $val )
{
print “$val
”;
}
:
?>


ឥឡូវនេះ $arr1 array ផ្ទុកនូវតំលៃ 1, 2, 3, “a”, “b”, “c” ។
9. Removing the First Element of an Array with array_shift() .
array_shift() មានតួនាទីយកចេញនូវធាតុទីមួយនៃ array ។សូមពិនិត្យ ឧទាហរណ៍ខាងក្រោមៈ
ឧទាហរណ៍ ៣២


Remove first array element with array_shift()


Using array_shift()


$user=array(“M”,”U”,”T”,”H”);
$total=count($user);
echo “Before use array_shift() threre are $total element
”;
foreach($user as $val)
{
echo “$val
”;
}
array_shift($user);
$total=count($user);
echo “after use array_shift() there are $total element”;
foreach($user as $val)
{
print “$val
”;
}
?>>
a


10. Slicing Arrays with array_slice() .
array_slice() អនុញ្ញាតអោយអ្នកទាញយកចំនួននៃធាតុ array ដែលទាមទារអោយអ្នកផ្ដល់នូវ
argument ចំនួនបី ទីមួយគឺជា array variable ទី២ជាទីតាំដែលត្រូវចាប់ផ្ដើមយក និងទីបី គឺជា ចំនួន ធាតុ របស់ array ដែលត្រូវការហើយ argument ទីបីនេះគឺ (optional) ប្រសិនបើអ្នក មិន ប្រើនូវ argument នេះទេ array_slice() និងចាប់យកនូវធាតុទាំងអស់នៃ array ចាប់ពីទីតាំង ដែល អ្នកបានផ្ដល់ជាតំលៃនៅ ក្នុង argument ទី១មក។
ឧទាហរណ៍ ៣៣

Using array_slice()


Using array_slice()


$first = array (“a”, “b”, “c”, “d”, “e”, “f”);
$second = array_slice($first, 2, 3);
foreach ( $second as $val )
{
print “$val
”;
}
?>


កូដដែលបង្កើតនៅឧទាហរណ៍ ៣៣ នឹងបង្ហាញនូវលទ្ធផល ‘c’, ‘d’, និង ‘e’ ដែលជាធាតុរបស់
$secend បន្ទាប់ពីប្រើនូវ array_slice() ដោយយកធាតុទាំងអស់របស់ $first ។
11. Sorting Arrays .
11.1 Sorting Numerically Indexed Arrays with sort() .sort() ទទួលយកនូវ argument មួយដែលជា array ហើយធ្វើការតំរៀបវាទៅតាមលំដាប់នៃតួ អក្សរឬពីតូចទៅធំ ឧទាហរណ៍ ៣៤ គឺជាការបង្កើត array ដោយផ្ដល់នូវតំលៃជា string ទៅអោយបន្ទាប់មកយើងប្រើ sort() ដើម្បីតំរៀបធាតុទាំងនោះពី A-Z ឬ ពីតូចទៅធំ រួចបង្ហាញជាលទ្ធផលទៅកាន់ Browser ។
សូមពិនិត្យក្នុងឧទាហរណ៍ ៣៤

sorting array with sort() function


Using sort() function


$s_array = array (“Bayon”, “Taprom”, “Angkor”, “Presh vihear”);
sort( $s_array );
foreach ( $s_array as $var )
{
print “$var
”;
}
?>


អ្នកក៏អាចផ្លាស់ប្ដូរនូវលំដាប់នៃការតំរៀបធាតុរបស់ array ពីលំដាប់ តូចទៅធំ ឬ ពីលំដាប់ធំ ទៅតូចវិញដោយការប្រើនូវ rsort()។ សូមកុំព្យាយាមប្រើ sort()ឬ rsort() ជាមួយ associate array ពីព្រោះ វានឹងធ្វើអោយអ្នកបាត់បង់នូវ key របស់ array ។
11.2 Sorting an Associative Array by Value with asort() .
assort() ទទួលយក argument ដែលជាប្រភេទ associate array ហើយធ្វើការតំរៀបតំលៃ របស់ array នោះពី A-Z ឬ ជាតំលៃលេខ ពីតូចទៅធំ អាស្រ័យទៅលើប្រភេទនៃតំលៃ ។
ឧទាហរណ៍ ៣៥

sorting an associate array by value with assort()


sorting an associate array by value with assort()


$first = array(“Cocacola”=>3,”Pepsi”=>2,”Fanta”=>1);
echo “an associate Array before use asort
”;
foreach ( $first as $key => $val )
{
print “$key = $val
”;
}
echo “an associate Array after asort
”;
asort( $first );
foreach ( $first as $key => $val )
{
print “$key = $val
”;
}
?>


សំរាប់ការប្ដូរលំដាប់នៃការតំរៀបពីតូចទៅធំ ឬ ពីធំទៅតូច អ្នកអាចប្រើរនូវ arsort()
a
11.3 Sorting an Associative Array by Key with ksort()
.
ksort() ទទួលនូវ argument ដែលជា associate array ហើយធ្វើការតំរៀបតំលៃ របស់វា និមួយៗទៅតាមលំដាប់ពី A-Z ឬ ជាលេខ ពីធំទៅតូច ដោយអាស្រ័យទៅលើ key របស់ array នោះ ។
ឧទាហរណ៍ ៣៦

sorting an associate array by key with assort()


sorting an associate array by key with kssort()


$first = array(“Cocacola”=>3,”Pepsi”=>2,”Fanta”=>1);
echo “an associate Array before use ksort
”;
foreach ( $first as $key => $val )
{
print “$key = $val
”;
}
echo “an associate Array after use ksort
”;
ksort( $first );
foreach ( $first as $key => $val )
{
print “$key = $val
”;
}
?>