PHP - Ds\Hashable::hash() 函式



PHP 的 Ds\Hashable::hash() 函式用於確定物件的雜湊值。當使用物件作為基於雜湊的集合(如雜湊表或集合)的鍵時,此函式非常有用。

語法

以下是PHP Ds\Hashable::hash() 函式的語法:

mixed public Ds\Hashable::hash()

引數

hash() 函式不接受任何引數。

返回值

此函式返回一個標量值,用作雜湊值。

PHP版本

hash() 函式從 PECL Ds 擴充套件的 1.0.0 版本開始可用。

示例1

首先,我們將向您展示PHP Ds\Hashable::hash() 函式的基本示例,以獲取物件的雜湊值。

<?php
   // Create a class Person and implement Ds\Hashable 
   class Person implements Ds\Hashable {
      private $name;
      private $age;
  
      public function __construct($name, $age) {
          $this->name = $name;
          $this->age = $age;
      }
  
      public function hash() {
          return md5($this->name . $this->age);
      }
  
      public function equals($obj): bool {
          return $this->name === $obj->name && $this->age === $obj->age;
      }
  }
  
  $person = new Person("Ankit", 33);
  echo $person->hash();
  
?>

輸出

以上程式碼將產生類似這樣的結果:

4ad162f31dbd28172e2dc04a2f033f47

示例2

此示例演示如何在一個集合中使用可雜湊物件,以確保根據雜湊值的唯一性。

<?php
   // Create a Product class and implement Ds\Hashable
   class Product implements Ds\Hashable {
      private $id;
      private $name;
  
      public function __construct($id, $name) {
          $this->id = $id;
          $this->name = $name;
      }
  
      public function hash() {
          return $this->id;
      }
  
      public function equals($obj): bool {
          return $this->id === $obj->id;
      }
  }
  
  $product1 = new Product(101, "Laptop");
  $product2 = new Product(102, "Smartphone");
  
  $set = new Ds\Set();
  $set->add($product1);
  $set->add($product2);
  
  foreach ($set as $product) {
      echo $product->hash() . "\n";
  }
?> 

輸出

執行上述程式後,它將生成以下輸出:

101
102

示例3

現在,我們將使用hash()函式為組合多個屬性的物件建立一個自定義雜湊函式。

<?php
   // Create a class Book and implement Ds\Hashable
   class Book implements Ds\Hashable {
      private $title;
      private $author;
  
      public function __construct($title, $author) {
          $this->title = $title;
          $this->author = $author;
      }
  
      public function hash() {
          return sha1($this->title . $this->author);
      }
  
      public function equals($obj): bool {
          return $this->title === $obj->title && $this->author === $obj->author;
      }
  }
  
  $book = new Book("1984", "George Orwell");
  echo "Hash value is as follows: \n";
  echo $book->hash();
?> 

輸出

這將建立以下輸出:

Hash value is as follows:
f54227c9321449aea0c1ddcd9d02228a09b6bcbc

示例4

在下面的示例中,我們使用hash()函式來比較兩個物件,並檢視它們根據其雜湊值是否相等。

<?php
   // Create a Car class and implement Ds\Hashable
   class Car implements Ds\Hashable {
      private $make;
      private $model;
  
      public function __construct($make, $model) {
          $this->make = $make;
          $this->model = $model;
      }
  
      public function hash() {
          return crc32($this->make . $this->model);
      }
  
      public function equals($obj): bool {
          return $this->make === $obj->make && $this->model === $obj->model;
      }
  }
  
  $car1 = new Car("Maruti Suzuki", "Baleno");
  $car2 = new Car("Maruti Suzuki", "Baleno");
  
  if ($car1->equals($car2)) {
      echo "Cars are identical.";
  } else {
      echo "Cars are different.";
  }
?> 

輸出

執行上述程式後,它將產生以下輸出:

Cars are identical.
php_function_reference.htm
廣告