问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php中arrayAccess中$this->element[$offset]=$value是什么语法

发布网友 发布时间:2022-04-10 08:39

我来回答

4个回答

懂视网 时间:2022-04-10 13:01

接口摘要  ArrayAccess { /* 方法 */ abstract public boolean offsetExists ( mixed $offset ) abstract public mixed offsetGet ( mixed $offset ) abstract public void offsetSet ( mixed $offset , mixed $value ) abstract public void offsetUnset ( mixed $offset ) }


举个例子

class Test implements ArrayAccess
{
    private $testData = [];

    public function offsetExists($offset)
    {
        echo 'call ' . __METHOD__ . "
";
        return isset($this->testData[$offset]);
    }

    public function offsetGet($offset)
    {
        echo 'call ' . __METHOD__ . "
";
        return $this->testData[$offset];
    }

    public function offsetSet($offset, $value)
    {
        echo 'call ' . __METHOD__ . "
";
        return $this->testData[$offset] = $value;
    }

    public function offsetUnset($offset)
    {
        echo 'call ' . __METHOD__ . "
";
        unset($this->testData[$offset]);
    }

}



$obj = new Test();

if (!isset($obj['name'])) {    //call Test::offsetExists
    $obj['name'] = 'zhangsan';    //call Test::offsetSet
}
echo $obj['name'] . " ";    //call Test::offsetGet

var_dump($obj);

$obj['age'] = 18;    //call Test::offsetSet


echo $obj['age'] . " ";    //call Test::offsetGet


unset($obj['address']);    //call Test::offsetUnset

ArrayAccess(数组式访问)接口

标签:php   arrayaccess   

热心网友 时间:2022-04-10 10:09

我可以这么说, 你不太懂php类的用法,你写的test类,当你new下,然后下边的代码和你的类没半点关系,把类删了也不影响你后面的代码,$this->element[$offset]=$value
,这是什么意思,你就要知道当new完一个类后,怎么设置它的私有属性和方法。这种话是 设置test类的私有属性赋值。希望能帮助到你,建议你把类的用法再看下。。追问额,你好像没看明白,我上面的是PHP SPL迭代,这么说,我上面的类就那些是可以在电脑上运行的,你直接粘贴到你的服务器试试,是可以运行的,不是普通的类

追答SPL提供了多个迭代器类,分别提供了迭代访问、过滤数据、缓存结果、控制分页等功能。http://www.cnblogs.com/ellisonDon/archive/2013/02/26/2932978.html

热心网友 时间:2022-04-10 11:27

为什麼不是数组..

$element是私有变量,


调用的时候就是$this->element;


而[$offset]则是键值。

为什麼不是数组呢.......


打个比方:

   1、$test=new Test();//实例化TEST
   
   2、$test['test']='test';//自动调用offsetSet
   /*
       因为点用了offsetSet函数.
       所以$this->element['test']=test;
   */
   if(isset($test['test'])){//自动调用offsetExists
   /*
       返回isset($this->element['test'])
   */
     echo $test['test'].'<br />'; //调用offsetGet
   /*
       返回$this->element['test']
   */
     unset($test['test']);//自动调用offsetunset
   /*
       unset($this->element['test']);
   */
     var_mp($test['test']);
    }

热心网友 时间:2022-04-10 13:01

$this-> 是访问本对象的成员的语法

$this->element 就是访问上面定义的那个$emelent变量

$this->element[$offset] 就是把这个变量做为数组访问了,因为PHP是弱类型语言,这个变量是可以做为数组使用的

$offset 是当前方法接收到参数,用它来做为$element的键名
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何理解“时间就是空间,空间就是时间”? 办公室副主任竞聘演讲稿范文 学校办公室主任竞聘演讲稿范文 最新办公室主任竞聘演讲稿 办公室主任竞聘演讲稿优秀范文 ...堆墨现象,墨线 接地和粘度都正常,请问应如何解决 ...都正常了开始喷印结果喷一条墨线好恐怖怎么解决呀各位老师 威力喷码机 求一份学生会演讲词 大学学生会个人优秀演讲稿 海贝淘储值是真的吗 雷蛇售后换新会重置三包吗 淘购物弹窗怎么永久关闭? 是那个软件的插件? 真他妈的烦 黄金血道的剧情简介 喜淘属于什么平台 微信小程序优品海外淘是不是骗人的我在上面买了个口红竟然不显示快递快递单号也查不到? 黄金血道电视剧在哪个电视台播 友淘购平台充值提现忘输入银行卡被冻解,解冻要输入相同的钱,才能解冻,是骗子吗?? 一淘优品是什么?知道的说说 淘优品兑换东西 淘购优品网站怎么样? 淘购app赚佣金是真是假 长方形手表怎么调时间? 我现在住的房子是我婆婆的名字,如果有一天我和老公离婚了房子我能分到吗? 父母出钱买的房子离婚还能分的到吗 宅基地是丈夫父母所有的,要是我离婚了还能分到房子吗? 女方提出离婚,能分到一半房子吗? 安置房是婚后按人头分的离婚我能分到房子吗? 父母买的房子离婚后能分到吗 离婚十年后还能分割房子吗 安徽优淘购网络科技有限公司是不是骗人的? 黄金血道的介绍 雷蛇只有sn码可以换新吗 扑淘商城是正品吗 冬季怎样防止静电的发生? 雷蛇灵刃blade pro 显卡可以更换吗 冬天怎么防止起静电 换个雷蛇鼠标 电脑上需要安装什么东西吗 黄金血道电视剧的片尾曲,在哪里可以下载,不是毛阿敏 雷蛇鼠标宏编辑完以后 换了电脑还需要再编辑一次吗? 黄金血道的拼音 RAZER炼狱蝰蛇在自家电脑上设置好配置文件 换别的电脑需要重新设置吗 黄金血道琪琪格是谁演的 雷蛇鼠标换另一款雷蛇鼠标 电脑里的旧版驱动要卸载吗? 以前买了雷蛇的地狱狂龙换电脑的话以前貌似那个盘丢了。。是不是鼠标就不能用了。非要那个盘才行。 林则徐虎门销烟简介 有关虎门销烟的资料20字 虎门销烟的介绍 一个女人通常什么原因才删除你和他的聊天记录 虎门硝烟的内容简介100字左右