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:
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)
// }
// }