Kodealgo

for PHP

for loop merupakan salah satu perulangan paling kompleks di PHP yang serbaguna, kita bisa menggunakannya untuk melakukan iterasi sebanyak yang kita perlukan, entah berdasarkan nilai berupa angka atau panjang array.

Perulangan yang satu ini juga biasa digunakan untuk menulis sebuah algoritma, meskipun kompleks ini bisa menjadi fitur yang diperlukan saat kita membuat aplikasi. Oleh karena itu, penting untuk memahami perulangan for secara mendalam.

Berikut beberapa topik yang akan kita bahas mengenai perulangan for di PHP:

  1. Sintaks
  2. Contoh
  3. Perulangan for dengan Array

Sintaks

Secara umum, sintaks perulangan for mirip seperti bahasa pemrograman lain, berikut sintaksnya:

for (ekspresi1, ekspresi3, ekspresi3) {
  statement
}

ekspresi1 dievaluasi sekali tanpa syarat di awal perulangan.

ekspresi2 dievaluasi diawal setiap iterasi, jika bernilai true, perulangan akan berlanjut dan statement akan dievaluasi, jika bernilai false perulangan akan berakhir, statement tidak dievaluasi.

ekspresi3 dievaluasi disetiap akhir iterasi.

Sedangkan statement, disetiap iterasi selama ekspresi2 bernilai true.

Ketiga ekspresi dapat dikosongkan atau berisi beberapa ekspresi yang dipisahkan dengan koma. Jika ekspresi3 dikosongkan, maka perulangan tidak akan berhenti (infinity loop), ini mungkin tidak berfungsi seperti yang kita harapkan, tetapi seringkali berguna ketika kita ingin menghentikan perulangan menggunakan kata kunci break.

Contoh

Katakanlah kita ingin mencetak pesan "hello world" ke layar sebanyak 10 kali, kita tentu saja bisa menulis echo "hello world"; sebanyak 10 kali tanpa menggunakan perulangan.

Tapi bagaimana jadinya jika kita diminta melakukan hal tersebut sebanyak 1 juta kali, ini tentu saja bisa jadi merepotkan, disinilah kita bisa menggunakan perulangan.

Contoh berikut kita mencetak pesan "hello world n" sebanyak 10 kali, dimana n adalah nilai dari variabel $i yang berubah sesuai dengan ekspresi3, dalam hal ini $i ditambah 1 di setiap iterasi sampai ekspresi2 bernilai false yaitu kurang dari 10.

for ($i = 0; $i < 10; $i++) {
  echo "hello world $i" . PHP_EOL;
}

// hello world 0
// hello world 1
// hello world 2
// hello world 3
// hello world 4
// hello world 5
// hello world 6
// hello world 7
// hello world 8
// hello world 9

Seperti yang telah disebutkan sebelumnya bahwa ekspresi1, ekspresi2, dan ekspresi3 dapat dihilangkan, ini tentu saja dapat mengakibatkan perulangan tanpa henti, tapi kita bisa menggunakan kata kunci break untuk menghentikannya.

Mari kita modifikasi contoh perulangan sebelumnya agar menghasilkan output yang sama tapi tanpa ekspresi di dalam kurung.

$i = 0;

for (; ;) {
  if($i >= 10) {
    break;
  }

  echo "hello world $i" . PHP_EOL;

  $i++;
}

// hello world 0
// hello world 1
// hello world 2
// hello world 3
// hello world 4
// hello world 5
// hello world 6
// hello world 7
// hello world 8
// hello world 9

Perulangan for dengan Array

for juga sering digunakan untuk mengakses atau memodifikasi setiap elemen array, jumlah iterasi biasanya bergantung pada panjang array.

Misalnya, kita memiliki sebuah array $numbers yang elemennya berupa angka, kita ingin mengetahui berapa hasilnya jika semua elemen tersebut dijumlahkan.

$numbers = [1, 2, 3, 4, 5, 6, 7];
$lengthNumbers = count($numbers);

$result = 0;

for ($i = 0; $i < $lengthNumbers; $i++) {
  $result = $result + $numbers[$i];
}

var_dump($result); // int(28)

Variabel $lengthNumbers akan berisi integer yang merepresentasikan panjang array $numbers hasil dari fungsi count($numbers).

Disetiap iterasi, kita mengakses setiap elemen array menggunakan indeks berdasarkan variabel $i ($numbers[$i]), variabel ini dijumlahkan dengan 1 ($++) pada setiap iterasi.

Mari kita lihat contoh yang lebih kompleks, katakanlah kami memiliki array $mahasiswa, array tersebut berisi data-data mahasiswa seperti nama, nilai, dan lulus, saat ini kami tidak tahu lulus tidaknya mahasiswa oleh karena itu nilai lulus berisi null.

Tugas kita adalah mengubah nilai lulus menjadi boolean tidak lagi null, false jika nilai kurang dari 80 dan true jika nilainya lebih dari atau sama dengan 80.

$mahasiswa = [
  [
    'nama' => 'budi',
    'nilai' => 80,
    'lulus' => null
  ],
  [
    'nama' => 'dodi',
    'nilai' => 79,
    'lulus' => null
  ],
  [
    'nama' => 'bambang',
    'nilai' => 85,
    'lulus' => null
  ],
];

$length = count($mahasiswa);

for ($i = 0; $i < $length; $i++) {
  $nilaiMahasiswa = $mahasiswa[$i]['nilai'];

  if($nilaiMahasiswa >= 80) {
    $mahasiswa[$i]['lulus'] = true;
  } else {
    $mahasiswa[$i]['lulus'] = false;
  }
}

var_dump($mahasiswa);
// array(3) {
//   [0]=>
//   array(3) {
//     ["nama"]=>
//     string(4) "budi"
//     ["nilai"]=>
//     int(80)
//     ["lulus"]=>
//     bool(true)
//   }
//   [1]=>
//   array(3) {
//     ["nama"]=>
//     string(4) "dodi"
//     ["nilai"]=>
//     int(79)
//     ["lulus"]=>
//     bool(false)
//   }
//   [2]=>
//   array(3) {
//     ["nama"]=>
//     string(7) "bambang"
//     ["nilai"]=>
//     int(85)
//     ["lulus"]=>
//     bool(true)
//   }
// }