Heim >Backend-Entwicklung >PHP-Tutorial >PHP ArrayAccess-Schnittstelle

PHP ArrayAccess-Schnittstelle

王林
王林nach vorne
2023-09-05 23:01:021512Durchsuche

PHP ArrayAccess 接口

Einführung

In PHP wird die Schnittstelle ArrayAccess verwendet, um eine Klasse zu entwickeln, die einen Array-ähnlichen Zugriff auf eine der Array-Eigenschaften bereitstellt. Eine solche Array-Eigenschaft kann während der Objekterstellung manipuliert werden, ohne sie offenzulegen. Die ArrayAccess-Schnittstelle definiert die folgenden abstrakten Methoden

Syntax

ArrayAccess {
   /* Methods */
   abstract public offsetExists ( mixed $offset ) : bool
   abstract public offsetGet ( mixed $offset ) : mixed
   abstract public offsetSet ( mixed $offset , mixed $value ) : void
   abstract public offsetUnset ( mixed $offset ) : void
}

Methoden

ArrayAccess::offsetExists – Ob der Offset vorhanden ist

ArrayAccess::offsetGet – Der abzurufende Offset

ArrayAccess: :offsetSet – Weist dem angegebenen Offset einen Wert zu.

ArrayAccess::offsetUnset – Setzt den Offset zurück.

ArrayAccess::offsetUnset – Offset aufheben. p>

ArrayAccess-Beispiel

Im folgenden Beispiel ist das assoziative Array eine interne private Eigenschaft von myclass. Der Schlüssel fungiert als Offset. Wir können Elemente in einem Array festlegen, abrufen und deaktivieren. Wenn kein Offset angegeben ist, wird er als Ganzzahl behandelt und jedes Mal auf den nächsten Index erhöht.

Beispiel

Live-Demonstration

<?php
class myclass implements ArrayAccess {
   private $arr = array();
   public function __construct() {
      $this->arr = array(
         "Mumbai" => "Maharashtra",
         "Hyderabad" => "A.P.",
         "Patna" => "Bihar",
      );
   }
   public function offsetSet($offset, $value) {
      if (is_null($offset)) {
         $this->arr[] = $value;
      } else {
         $this->arr[$offset] = $value;
      }
   }
   public function offsetExists($offset) {
      return isset($this->arr[$offset]);
   }
   public function offsetUnset($offset) {
      unset($this->arr[$offset]);
   }
   public function offsetGet($offset) {
      return isset($this->arr[$offset]) ? $this->arr[$offset] : null;
   }
}
$obj = new myclass();
var_dump(isset($obj["Mumbai"]));
var_dump($obj["Mumbai"]);
unset($obj["Mumbai"]);
var_dump(isset($obj["Mumbai"]));
$obj["Bombay"] = "Maharashtra";
var_dump($obj["Bombay"]);
$obj["Chennai"] = &#39;Tamilnadu&#39;;
$obj[] = &#39;New State&#39;;
$obj["Hyderabad"] = &#39;Telangana&#39;;
print_r($obj);
?>

Ausgabe

Das obige Programm zeigt die folgende Ausgabe

bool(true)
string(11) "Maharashtra"
bool(false)
string(11) "Maharashtra"
myclass Object(
   [arr:myclass:private] => Array(
      [Hyderabad] => Telangana
      [Patna] => Bihar
      [Bombay] => Maharashtra
      [Chennai] => Tamilnadu
      [0] => New State
   )

)

Array-Eigenschaften der Klasse können auch indizierte Arrays sein. Als Offset fungiert in diesem Fall der Index des Elements (beginnend bei 0). Wenn die Methode offsetSet(0 ohne den Offset-Parameter aufgerufen wird, wird der Array-Index auf die nächste verfügbare Ganzzahl erhöht

Beispiel

<?php
class myclass implements ArrayAccess {
   private $arr = array();
   public function __construct() {
      $this->arr = array("Mumbai", "Hyderabad", "Patna");
   }
   public function offsetSet($offset, $value) {
      if (is_null($offset)) {
         $this->arr[] = $value;
      } else {
         $this->arr[$offset] = $value;
      }
   }
   public function offsetExists($offset) {
      eturn isset($this->arr[$offset]);
   }
   public function offsetUnset($offset) {
      unset($this->arr[$offset]);
   }
   public function offsetGet($offset) {
      return isset($this->arr[$offset]) ? $this->arr[$offset] : null;
   }
}
$obj = new myclass();
var_dump(isset($obj[0]));
var_dump($obj[0]);
unset($obj[0]);
var_dump(isset($obj[0]));
$obj[3] = "Pune";
var_dump($obj[3]);
$obj[4] = &#39;Chennai&#39;;
$obj[] = &#39;NewDelhi&#39;;
$obj[2] = &#39;Benguluru&#39;;
print_r($obj);
?>

Ausgabe

Das obige Programm zeigt die folgende Ausgabe

bool(true)
string(6) "Mumbai"
bool(false)
string(4) "Pune"
myclass Object(
   [arr:myclass:private] => Array(
      [1] => Hyderabad
      [2] => Benguluru
      [3] => Pune
      [4] => Chennai
      [5] => NewDelhi
   )

)

Das obige ist der detaillierte Inhalt vonPHP ArrayAccess-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen