This time I will bring you PHP arrayDetailed explanation of the use of the access interface ArrayAccess, what are the precautions for using the PHP array access interface ArrayAccess, the following is a practical case, let's take a look .
The example in this article describes the usage of PHP array access interface ArrayAccess. Share it with everyone for your reference, the details are as follows:
PHP ArrayAccess interface is also called the array access interface. The function of this interface is to provide the ability to access objects like accessing arrays.
Interface Summary is as follows:
ArrayAccess { // 获取一个偏移位置的值 abstract public mixed offsetGet ( mixed $offset ) // 设置一个偏移位置的值 abstract public void offsetSet ( mixed $offset , mixed $value ) // 检查一个偏移位置是否存在 abstract public boolean offsetExists ( mixed $offset ) // 复位一个偏移位置的值 abstract public void offsetUnset ( mixed $offset ) }
Example:
<?php /** * ArrayAndObjectAccess * 该类允许以数组或对象的方式进行访问 * * @author 疯狂老司机 */ class ArrayAndObjectAccess implements ArrayAccess { /** * 定义一个数组用于保存数据 * * @access private * @var array */ private $data = []; /** * 以对象方式访问数组中的数据 * * @access public * @param string 数组元素键名 */ public function get($key) { return $this->data[$key]; } /** * 以对象方式添加一个数组元素 * * @access public * @param string 数组元素键名 * @param mixed 数组元素值 * @return mixed */ public function set($key,$value) { $this->data[$key] = $value; } /** * 以对象方式判断数组元素是否设置 * * @access public * @param 数组元素键名 * @return boolean */ public function isset($key) { return isset($this->data[$key]); } /** * 以对象方式删除一个数组元素 * * @access public * @param 数组元素键名 */ public function unset($key) { unset($this->data[$key]); } /** * 以数组方式向data数组添加一个元素 * * @access public * @abstracting ArrayAccess * @param string 偏移位置 * @param mixed 元素值 */ public function offsetSet($offset,$value) { if (is_null($offset)) { $this->data[] = $value; } else { $this->data[$offset] = $value; } } /** * 以数组方式获取data数组指定位置元素 * * @access public * @abstracting ArrayAccess * @param 偏移位置 * @return mixed */ public function offsetGet($offset) { return $this->offsetExists($offset) ? $this->data[$offset] : null; } /** * 以数组方式判断偏移位置元素是否设置 * * @access public * @abstracting ArrayAccess * @param 偏移位置 * @return boolean */ public function offsetExists($offset) { return isset($this->data[$offset]); } /** * 以数组方式删除data数组指定位置元素 * * @access public * @abstracting ArrayAccess * @param 偏移位置 */ public function offsetUnset($offset) { if ($this->offsetExists($offset)) { unset($this->data[$offset]); } } } $animal = new ArrayAndObjectAccess(); $animal->dog = 'dog'; // 调用ArrayAndObjectAccess::set $animal['pig'] = 'pig'; // 调用ArrayAndObjectAccess::offsetSet var_dump(isset($animal->dog)); // 调用ArrayAndObjectAccess::isset var_dump(isset($animal['pig'])); // 调用ArrayAndObjectAccess::offsetExists var_dump($animal->pig); // 调用ArrayAndObjectAccess::get var_dump($animal['dog']); // 调用ArrayAndObjectAccess::offsetGet unset($animal['dog']); // 调用ArrayAndObjectAccess::offsetUnset unset($animal->pig); // 调用ArrayAndObjectAccess::unset var_dump($animal['pig']); // 调用ArrayAndObjectAccess::offsetGet var_dump($animal->dog); // 调用ArrayAndObjectAccess::get ?>
The above output:
boolean true boolean true string 'pig' (length=3) string 'dog' (length=3) null null
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!
Recommended reading:
Detailed explanation of the use of PHP callback functions
How does PHP count binary algorithms
The above is the detailed content of Detailed explanation of the use of PHP array access interface ArrayAccess. For more information, please follow other related articles on the PHP Chinese website!