ホームページ > バックエンド開発 > PHPチュートリアル > PHP ArrayAccess インターフェイス

PHP ArrayAccess インターフェイス

王林
リリース: 2023-09-06 06:00:01
転載
1486 人が閲覧しました

PHP ArrayAccess 接口

はじめに

PHP では、ArrayAccess インターフェイスを使用して、配列の 1 つへの同様のアクセスを提供するクラスを開発します。プロパティ、配列アクセス。このような配列プロパティは、オブジェクトの作成中に公開せずに操作できます。 ArrayAccessインターフェイスは次の抽象メソッドを定義します

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
}
ログイン後にコピー

Method

ArrayAccess::offsetExists - オフセットが存在するかどうか

ArrayAccess::offsetGet - 取得するオフセット < /p>

ArrayAccess::offsetSet - 指定されたオフセットに値を割り当てます

ArrayAccess::offsetUnset - オフセットの設定を解除します。

ArrayAccess::offsetUnset - オフセットの設定を解除します。 p>

ArrayAccess の例

次の例では、連想配列は myclass の内部プライベート プロパティです。キーはオフセットとして機能します。配列内の項目を設定、取得、および設定解除できます。オフセットが指定されていない場合は、整数として扱われ、毎回次のインデックスにインクリメントされます。

リアルタイム デモンストレーション

<?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);
?>
ログイン後にコピー

出力

上記のプログラムは次の出力を表示します

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
   )

)
ログイン後にコピー

class はインデックス付き配列にすることもできます。この場合、要素のインデックス (0 から始まる) がオフセットとして機能します。 offsetSet(0 メソッドが offset パラメーターなしで呼び出される場合、配列インデックスは次に使用可能な整数に増分されます。

Example

<?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);
?>
ログイン後にコピー

Output

上記のプログラムは次のように表示します。出力

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
   )

)
ログイン後にコピー

以上がPHP ArrayAccess インターフェイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート