PHP - Operator Penembus (Spaceship Operator)

Hai teman-teman yang sedang belajar pemrograman! Hari ini, kita akan memulai sebuah perjalanan menarik ke dunia PHP dan mengexploreasi operator kecil yang menarik ini yang disebut Operator Penembus. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - saya akan menjadi panduan ramah Anda dalam petualangan ini, dan pada akhirnya, Anda akan mengendarai penembus ini seperti seorang ahli!

PHP - Spaceship Operator

Apa Itu Operator Penembus?

Sebelum kita masuk ke detil, mari bicarakan apa sebenarnya Operator Penembus ini. Dalam PHP, Operator Penembus ditunjukkan oleh <=>. Ya, itu terlihat seperti kapal kecil, sehingga dinamai demikian! Ini adalah operator perbandingan yang diperkenalkan di PHP 7.0 untuk membuat hidup kita sebagai pemrogram sedikit lebih mudah.

Pertimbangkan ini sebagai cara yang sangat efisien untuk membandingkan dua nilai. Itu seperti memiliki komputer mini di dalam kode Anda yang dapat secara cepat mengatakan kepada Anda jika nilai satu kurang dari, sama dengan, atau lebih besar dari nilai lain. Menarik, kan?

Sintaks

Sintaks Operator Penembus cukup mudah:

$result = $a <=> $b;

Ini adalah apa yang dilakukannya:

  • Jika $a kurang dari $b, itu mengembalikan -1
  • Jika $a sama dengan $b, itu mengembalikan 0
  • Jika $a lebih besar dari $b, itu mengembalikan 1

Itu seperti robot kecil yang melihat dua nilai dan memberikan Anda ringkasan cepat tentang bagaimana mereka dibandingkan. Sekarang, mari kita lihat operator ini dalam aksi dengan beberapa contoh!

Contoh 1: Membandingkan Angka

Mulai dengan sesuatu yang sederhana - membandingkan angka.

<?php
$result1 = 5 <=> 10;
echo "5 <=> 10 = $result1\n";

$result2 = 10 <=> 5;
echo "10 <=> 5 = $result2\n";

$result3 = 5 <=> 5;
echo "5 <=> 5 = $result3\n";
?>

Output:

5 <=> 10 = -1
10 <=> 5 = 1
5 <=> 5 = 0

Dalam contoh ini, kita membandingkan angka yang berbeda:

  1. 5 kurang dari 10, jadi itu mengembalikan -1
  2. 10 lebih besar dari 5, jadi itu mengembalikan 1
  3. 5 sama dengan 5, jadi itu mengembalikan 0

Lihatlah seberapa cepat kita dapat menentukan hubungan antara angka-angka ini? Itu seperti memiliki ahli matematika mini di dalam kode kita!

Contoh 2: Membandingkan String

Operator Penembus tidak hanya untuk angka - itu juga bekerja dengan string!

<?php
$result1 = "apple" <=> "banana";
echo "'apple' <=> 'banana' = $result1\n";

$result2 = "zebra" <=> "aardvark";
echo "'zebra' <=> 'aardvark' = $result2\n";

$result3 = "hello" <=> "hello";
echo "'hello' <=> 'hello' = $result3\n";
?>

Output:

'apple' <=> 'banana' = -1
'zebra' <=> 'aardvark' = 1
'hello' <=> 'hello' = 0

Ini adalah apa yang terjadi:

  1. "apple" diurutkan sebelum "banana" secara alfabetik, jadi itu mengembalikan -1
  2. "zebra" diurutkan setelah "aardvark" secara alfabetik, jadi itu mengembalikan 1
  3. "hello" sama dengan "hello", jadi itu mengembalikan 0

Itu seperti memiliki perpustakaan yang dapat segera mengatakan kepada Anda bagaimana untuk mengurutkan bukunya!

Contoh 3: Membandingkan Array

Sekarang, mari kita tingkatkan dan gunakan Operator Penembus dengan array. Ini adalah tempat hal-hal menjadi sangat menarik!

<?php
$array1 = [1, 2, 3];
$array2 = [1, 2, 4];
$array3 = [1, 2, 3];

$result1 = $array1 <=> $array2;
echo "[1, 2, 3] <=> [1, 2, 4] = $result1\n";

$result2 = $array2 <=> $array1;
echo "[1, 2, 4] <=> [1, 2, 3] = $result2\n";

$result3 = $array1 <=> $array3;
echo "[1, 2, 3] <=> [1, 2, 3] = $result3\n";
?>

Output:

[1, 2, 3] <=> [1, 2, 4] = -1
[1, 2, 4] <=> [1, 2, 3] = 1
[1, 2, 3] <=> [1, 2, 3] = 0

Ini adalah apa yang terjadi:

  1. [1, 2, 3] dianggap kurang dari [1, 2, 4] karena dua elemen pertama sama, tetapi elemen ketiga array pertama (3) kurang dari elemen ketiga array kedua (4).
  2. [1, 2, 4] dianggap lebih besar dari [1, 2, 3] karena alasan yang sama, tapi terbalik.
  3. [1, 2, 3] sama dengan [1, 2, 3] karena semua elemen sama.

Itu seperti memiliki mesin perbandingan array yang sangat efisien!

Contoh 4: Pengurutan dengan Operator Penembus

Salah satu penggunaan yang menarik dari Operator Penembus adalah dalam pengurutan. Mari lihat bagaimana kita dapat menggunakan itu untuk mengurutkan array angka.

<?php
$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];

usort($numbers, function($a, $b) {
return $a <=> $b;
});

echo "Angka yang diurutkan: " . implode(', ', $numbers) . "\n";

usort($numbers, function($a, $b) {
return $b <=> $a;
});

echo "Angka yang diurutkan terbalik: " . implode(', ', $numbers) . "\n";
?>

Output:

Angka yang diurutkan: 1, 1, 2, 3, 3, 4, 5, 5, 6, 9
Angka yang diurutkan terbalik: 9, 6, 5, 5, 4, 3, 3, 2, 1, 1

Dalam contoh ini, kita menggunakan fungsi usort bersamaan dengan Operator Penembus untuk mengurutkan array. Fungsi usort menggunakan fungsi perbandingan untuk menentukan urutan elemen. Dengan menggunakan $a <=> $b, kita mengurutkan dalam urutan naik, dan dengan menggunakan $b <=> $a, kita mengurutkan dalam urutan turun.

Itu seperti memiliki topi pengurutan dari Harry Potter, tapi untuk angka!

Contoh 5: Pengurutan Objek Kompleks

Sekarang, mari kita tingkatkan lagi dan gunakan Operator Penembus untuk mengurutkan array objek.

<?php
class Person {
public $name;
public $age;

public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}

$people = [
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35),
new Person("David", 28)
];

usort($people, function($a, $b) {
return $a->age <=> $b->age;
});

echo "Diurutkan berdasarkan umur:\n";
foreach ($people as $person) {
echo $person->name . " - " . $person->age . "\n";
}

usort($people, function($a, $b) {
return $a->name <=> $b->name;
});

echo "\nDiurutkan berdasarkan nama:\n";
foreach ($people as $person) {
echo $person->name . " - " . $person->age . "\n";
}
?>

Output:

Diurutkan berdasarkan umur:
Bob - 25
David - 28
Alice - 30
Charlie - 35

Diurutkan berdasarkan nama:
Alice - 30
Bob - 25
Charlie - 35
David - 28

Dalam contoh ini, kita membuat kelas Person dengan properti name dan age. Kemudian kita menggunakan Operator Penembus untuk mengurutkan array objek Person, terlebih dahulu berdasarkan umur dan kemudian berdasarkan nama.

Itu seperti memiliki departemen HR yang sangat efisien yang dapat segera mengatur database karyawan Anda!

Operator Penembus dengan Operand Boolean

Akhirnya, mari lihat bagaimana Operator Penembus berperilaku dengan nilai boolean.

<?php
$result1 = true <=> false;
echo "true <=> false = $result1\n";

$result2 = false <=> true;
echo "false <=> true = $result2\n";

$result3 = true <=> true;
echo "true <=> true = $result3\n";
?>

Output:

true <=> false = 1
false <=> true = -1
true <=> true = 0

Ketika membandingkan nilai boolean:

  • true dianggap lebih besar dari false
  • false dianggap kurang dari true
  • true sama dengan true, dan false sama dengan false

Itu seperti memiliki detektor kebenaran di dalam kode Anda!

Ringkasan

Untuk mengakhiri perjalanan penembus kita, mari rangkum penggunaan berbeda Operator Penembus dalam tabel praktis:

Kasus Penggunaan Contoh Hasil
Angka 5 <=> 10 -1
String "apple" <=> "banana" -1
Array [1, 2, 3] <=> [1, 2, 4] -1
Pengurutan usort($array, fn($a, $b) => $a <=> $b) Mengurutkan dalam urutan naik
Objek $person1->age <=> $person2->age Membandingkan properti objek
Boolean true <=> false 1

Dan begitu juga, bintang pemrograman masa depan! Anda baru saja menguasai Operator Penembus di PHP. Ingat, seperti kapal pengembara yang baik, latihan membuat sempurna. Jadi, jangan khawatir untuk mencoba operator ini di kode Anda sendiri. Sebelum Anda tahu, Anda akan mengemudikan penembus ini dengan mudah di galaksi PHP!

Credits: Image by storyset