Apa Bedanya Indexed Array, Associative Array dan Multidimensional Array pada PHP?
Apa Bedanya Indexed Array, Associative Array dan Multidimensional Array pada PHP? [docs/kuhomi.id].

Apa Bedanya Indexed Array, Associative Array dan Multidimensional Array pada PHP?

Apabila kita belajar atau terjun ke dunia pemorgraman, apapun bahasa pemrograman yang kita pelajari, tidak luput dari salah satu struktur tipe data yang sering digunakan, yaitu Array.

Array adalah salah satu variabel struktur data yang dapat menyimpan beberapa nilai dengan tipe data yang sama pada lokasi memori yang berdekatan. Secara umum, satu variabel array hanya dapat menyimpan beberapa nilai dengan tipe data yang sama. Misal, kita deklarasikan satu buah variabel array dengan tipe data integer, maka variabel array tersebut hanya dapat menyimpan nilai dengan tipe data integer.

Berbeda dengan variabel array di PHP. Satu buah variabel array di PHP, dapat menyimpan beberapa nilai dengan tipe data yang berbeda, baik itu integer, float, string, object maupun array lainnya. Pada artikel ini, gua akan coba lebih dalam membahas variabel array pada pemrograman PHP.

Dalam pemrograman PHP, variabel array dibagi menjadi tiga jenis, yaitu Indexed Array, Associative Array, dan Multidimensional Array.

Indexed Array

Indexed array adalah salah satu jenis array pemrograman PHP yang index array nya berupa angka dimulai dari angka 0, 1, 2, 3 dst.  Indexed array ini adalah konsep dasar dari array secara umum, baik pada pemrograman PHP ataupun pemrograman lainnya.

<?php

      header('Content-type: text/plain');

	  // inisialisasi variable indexed array
	  $spek_pc = array("Ryzen 5600G", "RTX 4060", "1 TB", "16 GB");
		
	  print_r($spek_pc);

	  // cara akses langsung value index array tertentu
	  echo "\n\nAkses langsung value index array tertentu.\n";
	  echo "Index ke-0 :".$spek_pc[0]."\n";
	  echo "Index ke-1 :".$spek_pc[1]."\n";

	  //cara akses dengan fungsi looping for()
	  //looping for ini cocok apabila kita hanya ingin akses value index array ke-n s/d ke-n.
	  //sebagai contoh kita hanya ingin cetak value index array $spek_pc dari index ke 1 s/d index ke 2, maka
	  echo "\n\nAkses dengan fungsi looping for() dari index array ke 1 s/d 2.\n";
	  for($i=1;$i<3;$i++)
	  {
		// cetak kelayar value variable array index ke-$i.
		echo "Index ke-".$i." :".$spek_pc[$i]."\n";
	  }

	  echo "\n\nAkses dengan fungsi looping foreach().\n";
	  //cara akses dengan fungsi looping foreach()
	  //looping foreach ini cocok apabila kita ingin akses semua value index array.
	  foreach ($spek_pc as $key => $value) 
	  {
		echo "Index ke-".$key." :".$value."\n";
	  }

?>

Jika kita lihat di kodingan, value indexed array dapat diakses langsung dengan menentukan index-nya atau dapat menggunakan fungsi looping, baik foreach() maupun for(). Jika kita ingin akses dan mengolah seluruh value dari satu variabel array, lebih efektif menggunakan fungsi foreach(). Tetapi, apabila kita hanya ingin mengakses rentang index tertentu, lebih efektif menggunakan fungsi for(). 

Associative Array

Associative array adalah salah satu jenis array yang ada pada PHP, yang mana index array nya dapat berupa angka ataupun dapat berupa sebuah kata, yang biasa disebut “named key” atau “array key”. Menurut gua, associative array ini sangat bermanfaat apabila kita ingin menyimpan beberapa value dengan makna, maksud atau arti yang berbeda-beda kedalam satu buah variabel array. Sehingga, programmer dapat lebih mudah memahami arti dari setiap value yang ada pada variabel array tersebut.

<?php

      header('Content-type: text/plain');

	  // inisialisasi variable associative array
	  $spek_pc = array(
						"processor"	=> "Ryzen 5600G",
						"vga_card"	=> "RTX 4060",
						"storage"	=> "1 TB",
						"ram"		=> "16 GB"
					  );

	  print_r($spek_pc);

	  // cara akses langsung value dengan named key array tertentu
	  echo "\n\nAkses langsung value dengan named key array tertentu.\n";
	  echo "Processor :".$spek_pc['processor']."\n";
	  echo "VGA :".$spek_pc['vga_card']."\n";

	  echo "\n\nAkses dengan fungsi looping for().\n";
	  //penggunaan looping for pada variable associative array, menurut gua kurang efektif.
	  //karena, seperti baris kode dibawah ini kita perlu menggunakan 1 buah fungsi php lagi, yaitu array_keys()
	  //untuk mengambil semua named/array key pada variable associative array tertentu 
	  //dan menyimpannya dalam sebuah variable indexed array, yang pada contoh ini nama variable nya adalah $keys 
	  $keys = array_keys($spek_pc);      
	  for($i=0; $i < count($keys); ++$i) { 
		   echo $keys[$i] . ' ' . $spek_pc[$keys[$i]] . "\n"; 
	  } 

	  //cara akses dengan fungsi looping foreach()
	  //looping foreach ini cocok apabila kita ingin akses semua value index array.
	  echo "\n\nAkses dengan fungsi looping foreach().\n";
	  foreach ($spek_pc as $key => $value) {
		 echo $key." : ".$value."\n";
	  }

?>

Jika kita bandingkan dengan contoh program pada Indexed Array, mungkin tidak semua programmer paham dengan arti kata “Ryzen 5600G” atau “RTX 4060”. Tetapi, pada associative array, kita dapat memberikan named key pada setiap value sebagai index-nya. Jadi, programmer akan lebih memahami bahwa value “Ryzen 5600G” adalah processor dan “RTX 4060” adalah VGA Card.

Pada dasarnya, value pada variabel associative array dapat diakses secara langsung index nya, dengan fungsi looping foreach(), maupun fungsi looping for(). Tetapi pada praktiknya selama gua ngoding, value associative array lebih sering diakses secara langsung. Kalaupun ada pada case tertentu, lebih sering dan efektif diakses dengan fungsi looping foreach. Bisa kita lihat lagi pada contoh program, ketika kita ingin akses value associative array dengan fungsi for(), maka kita harus membuat 1 buah variabel indexed array yang berisikan seluruh “named key” dari variabel associative array yang mau kita looping.

Multidimensional Array

Pada saat kita mengembangkan aplikasi dengan  pemrograman PHP, mungkin kita akan sering menjumpai sebuah variabel multidimensional array ini. Multidimensional array adalah sebuah variabel array, yang mana di dalam variabel array tersebut terdapat satu atau lebih value yang berupa array. Ya bisa dikatakan ada array di dalam array. Bahkan, value yang berupa array tersebut, bisa juga memiliki satu atau lebih value yang berupa array juga, hingga seterusnya.

Oh iya, 1 variabel multidimension array, dapat terdiri dari dua atau lebih value array dengan jenis yang sama (indexed atau associative array saja) atau dua atau lebih value array dengan jenis yang beda (ada indexed dan ada juga associative array).   

Secara teori, tidak ada batasan untuk kedalaman dimensi array dari sebuah variabel array pada PHP. Tetapi, pada praktiknya biasanya tidak lebih dari 3 dimensi array. Hal tersebut karena semakin besar dimensi dari sebuah variabel array, maka akan memperberat proses load data yang dilakukan oleh perangkat yang digunakan dan juga akan menjadi kurang efektif untuk programmer ketika ingin mengolah data pada variabel array tersebut.

Contoh Multidimensional Array dengan Hanya Terdapat Indexed Array

<?php

        header('Content-type: text/plain');

		// inisialisasi variable multidimensional array
		$spek_pc = array(
							array(
								"Ryzen 5600G","RTX 4060","1 TB","16 GB"
							),
							array(
								 "Intel i5 12400","RTX 4060","2 TB","32 GB"
							)
						);

		print_r($spek_pc);

		// cara akses langsung value index array tertentu
		echo "\n\nAkses langsung value index array tertentu.\n";
		echo "Processor 1 :".$spek_pc[0][0]."\n";
		echo "VGA 1:".$spek_pc[0][1]."\n";
		echo "Storage Harddisk 2 :".$spek_pc[1][2]."\n";

		// cara akses multidimensional array dengan fungsi foreach()
		echo "\n\nAkses dengan fungsi 1 kali looping foreach.\n";
		foreach ($spek_pc as $key => $value) 
		{
			echo "Processor".intval($key+1)." :".$value[0]."\n";
			echo "VGA Card".intval($key+1)." :".$value[1]."\n";
			echo "Storage".intval($key+1)." :".$value[2]."\n";
			echo "RAM".intval($key+1)." :".$value[3]."\n";
		}

		// atau dapat dengan cara akses array dengan fungsi 2 kali looping foreach()
		echo "\n\nAkses dengan fungsi 2 kali looping foreach.\n";
		foreach ($spek_pc as $key => $value) 
		{
			echo "Spek ke-".intval($key+1)."\n";
			foreach ($value as $key2 => $value2) {
				echo $value2."\n";
			}
			echo "\n";
		}

?>

Contoh Multidimensional Array dengan Hanya Terdapat Associative Array

<?php

       header('Content-type: text/plain');

		// inisialisasi variable multidimensional array
		$spek_pc = array(
						"paket1"	=> array(
											"processor"	=> "Ryzen 5600G",
											"vga_card"	=> "RTX 4060",
											"storage"	=> "1 TB",
											"ram"		=> "16 GB"
										),
						"paket2"	=> array(
											"processor"	=> "Intel core i5 12400",
											"vga_card"	=> "RTX 4060",
											"storage"	=> "2 TB",
											"ram"		=> "32 GB"
										)	
						);

		print_r($spek_pc);

		// cara akses langsung value index array tertentu
		echo "\n\nAkses langsung value index array tertentu.\n";
		echo "Processor Paket 1 :".$spek_pc["paket1"]['processor']."\n";
		echo "VGA Paket 1 :".$spek_pc["paket1"]['vga_card']."\n";
		echo "Storage Harddisk Paket 2 :".$spek_pc["paket2"]['storage']."\n";

		// cara akses array dengan fungsi foreach()
		echo "\n\nAkses dengan fungsi 1 kali looping foreach.\n";
		foreach ($spek_pc as $key => $value) 
		{
			echo "Processor ".$key." :".$value["processor"]."\n";
			echo "VGA Card ".$key." :".$value["vga_card"]."\n";
			echo "Storage ".$key." :".$value["storage"]."\n";
			echo "RAM ".$key." :".$value["ram"]."\n\n";
		}

		// atau dapat dengan cara akses array dengan fungsi 2 kali looping foreach()
		echo "\nAkses dengan fungsi 2 kali looping foreach.\n";
		foreach ($spek_pc as $key => $value) 
		{
			echo "Spek ".$key."\n";
			foreach ($value as $key2 => $value2) {
				echo $key2." : ".$value2."\n";
			}
			echo "\n";
		}

?>

Contoh Multidimensional Array dengan Campuran Indexed Array dan Associative Array

<?php

        header('Content-type: text/plain');

		// inisialisasi variable indexed array
		$spek_pc = array(
						array(
							"processor"	=> "Ryzen 5600G",
							"vga_card"	=> "RTX 4060",
							"storage"	=> array("harddisk" => "1 TB", "ssd" => "500 GB"),
							"ram"		=> array("16 GB", "8 GB")
						),
						array(
							"processor"	=> "Intel core i5 12400",
							"vga_card"	=> "RTX 4060",
							"storage"	=> array("harddisk" => "2 TB", "ssd" => "1 TB"),
							"ram"		=> array("16 GB", "16 GB")
						)
					); 

		print_r($spek_pc);

		// cara akses langsung value index array tertentu
		echo "\n\nAkses langsung value index array tertentu.\n";
		echo "Processor :".$spek_pc[0]['processor']."\n";
		echo "VGA :".$spek_pc[0]['vga_card']."\n";
		echo "Storage Harddisk :".$spek_pc[1]['storage']['harddisk']."\n";

		// cara akses sub array dengan fungsi foreach()
		echo "\nAkses sub array dengan fungsi foreach().\n";
		foreach ($spek_pc[1]['ram'] as $key => $value) 
		{
			echo "RAM Kepingan ".intval($key+1)." :".$value."\n";
		}

?>

Sekian yang bisa gua bagi mengenai perbedaan jenis-jenis array dan contoh dasar implementasinya pada PHP. Untuk yang lagi belajar ngoding dasar, semangat belajarnya. Silahkan kalian kulik lagi mengenai konsep array ini, khususnya di PHP, baik cara inisialisasi atau akses value dari variabel array.

Artikel Terkait