Maison  >  Article  >  développement back-end  >  Interface PHP ArrayAccess

Interface PHP ArrayAccess

王林
王林avant
2023-09-05 23:01:021435parcourir

PHP ArrayAccess 接口

Introduction

En PHP, l'interface ArrayAccess est utilisée pour développer une classe qui fournit un accès de type tableau à l'une des propriétés du tableau. Une telle propriété de tableau peut être manipulée lors de la création d'un objet sans l'exposer. L'interface ArrayAccess définit les méthodes abstraites suivantes

Syntaxe

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
}

Méthodes

ArrayAccess::offsetExists - Si le décalage existe

ArrayAccess::offsetGet - Le décalage à récupérer

Ar rayAccess : :offsetSet - Attribue une valeur au décalage spécifié

ArrayAccess::offsetUnset - Annule le décalage.

ArrayAccess::offsetUnset - Décalage non défini. p>

ArrayAccess Exemple

Dans l'exemple ci-dessous, le tableau associatif est une propriété privée interne de maclasse. La clé agit comme un décalage. Nous pouvons définir, récupérer et supprimer des éléments dans un tableau. Si aucun décalage n'est donné, il sera traité comme un entier, incrémenté à l'index suivant à chaque fois.

Exemple

Démonstration en direct

<?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);
?>

Sortie

Le programme ci-dessus montre la sortie suivante

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
   )

)

Les propriétés de tableau de la classe peuvent également être des tableaux indexés. Dans ce cas, l'index de l'élément (à partir de 0) fait office de décalage. Lorsque la méthode offsetSet(0 est appelée sans le paramètre offset, l'index du tableau est incrémenté jusqu'au prochain entier disponible

Exemple

<?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);
?>

Sortie

Le programme ci-dessus affiche la sortie suivante

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
   )

)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer