.

Monday 7 September 2015

Pengenalan PHP 7 = Spaceship Operator (< = >)

PHP 7 akan menyusul dengan fungsi yang baru dan terkini dalam bulan Oktober atau November ini. Bagi pengguna PHP language, ia sesuatu yang mengujakan kerana terdapat sesuatu yang baru pada PHP. Salah satunya darinya ialah spaceship operator.

PHP 7 telah memperkenalkan comparison operator yang baru iaitu spaceship operator (< = >). Spaceship operator adalah sama dengan operator terdahulu iaitu <, <=, ==, >=, > tetapi spaceship operator akan memudahkan pengguna kerana dapat mengelakkan dari melakukan kesilapan. Ia juga paling berkesan digunakan untuk perbandingan contohnya seperti Usort(). Operator adalah berfungsi untuk membandingkan dua nilai yang sama atau berbeza.

Ini adalah contoh spaceship operator behavior; 
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 0

$a = (object) ["a" => "b"];
$b = (object) ["a" => "c"];
echo $a <=> $b; // -1

$a = (object) ["a" => "c"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"];
$b = (object) ["b" => "b"];
echo $a <=> $b; // 0

Contoh untuk Usort ;
if (($handle = fopen("people.csv", "r")) !== FALSE) {
    while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
         $data[] = $row;
    }
    fclose($handle);
}

// Sort by last name:
usort($data, function ($left, $right) {
     return $left[1] <=> $right[1];
});

Operator yang baru ini mengunakan fungsi seperti (expr) < = > (expr) di mana hasilnya menjadi 0 apabila kedua-dua entiti adalah sama. Ia akan menjadi 1 apabila entiti disebelah kiri adalah lebih tinggi, dan akan menjadi -1 apabila entiti disebelah kanan adalah lebih tinggi.


0 comments:

Post a Comment