- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么办法可以使用array_merge()
, array_pop()
, .. 可以与 ArrayAccess 一起使用的函数吗?
从现在开始我已经尝试过Iterate
接口(interface)和__set_state()
魔术方法没有成功。
给出的错误:array_replace_recursive() [<a href='function.array-replace-recursive'>function.array-replace-recursive</a>]: Argument #1 is not an array
.
只是为了记录,gettype()
返回object
和is_array()
返回false
我使用的是 php 版本 5.3.8
最佳答案
不幸的是,没有。它们仅适用于 native 数组类型。您必须将这些作为方法添加到对象的公共(public) API 中并在那里实现它们,例如像这样的东西:
class YourClass implements ArrayAccess, Countable
{
public function pop()
{
$lastOffset = $this->count() - 1;
$lastElement = $this->offsetGet($lastOffset);
$this->offsetUnset($lastOffset);
return $lastElement;
}
public function mergeArray(array $array) {
// implement the logic you want
}
// other code …
}
关于php - Arrayaccess 和 native php 数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788002/
编辑:我意识到文字的数量可能令人生畏。本题实质: 如何以可以设置多维值的方式实现 ArrayAccess? 我知道有人对此进行了讨论 here已经,但我似乎无法正确实现 ArrayAccess 接口(
我一直在SPL 上阅读PHP 的常用接口(interface),例如Iterator、Countable 和ArrayAccess。但是,我不明白它们是如何工作的。 他们的实现是否修改了 PHP 的核
我有两个类,即 foo 和 Bar class bar extends foo { public $element = null; public function __construc
我如何在我的静态类中使用数组访问?F.e.我喜欢执行下一个脚本: class A { ... } A['p'] = 15; echo isset(A['p']) ? A['p'] : 0; 最佳
假设我有以下代码: var = array( 'a' => array('b' => 'c'), 'd' => array('e' => 'f'),
array_values() 不适用于 ArrayAccess 对象。array_keys() 也没有 为什么? 如果我可以访问 $object['key'] 我应该能够进行所有类型的数组操作 最佳答
这两个有什么区别?从 API 文档来看,它们似乎是为了做完全相同的事情。 ArrayAccess 对比 ArrayIndex 在这种情况下,它们似乎是多余的,所以我一定在这里遗漏了一些东西。 最佳答案
首先,引用关于 ArrayAccess::offsetSet() 的 ole' 手册: This function is not called in assignments by reference
我有一个实现 ArrayAccess 的类,我正试图让它与多维数组一起工作。 exists 和 get 起作用。 set 和 unset 给我带来了问题。 class ArrayTest implem
我正在使用提供的解决方案将批量操作的复选框添加到 CRUD 列表 here . 但是,我的结果是用 Pagerfanta 分页的,所以我似乎需要在我的表单中使用 DataMapper。 我尝试了各种解
有什么办法可以使用array_merge() , array_pop() , .. 可以与 ArrayAccess 一起使用的函数吗? 从现在开始我已经尝试过Iterate接口(interface)和
当一个类实现了ArrayAccess 接口(interface)时,它就可以作为数组发挥作用,完成 OffsetGet、OffsetSet 等。 我没有看到的一件事是当我们想要 count() 或 s
我的表单有问题,每次我想保存评论时都会出现此错误: Expected argument of type array or Traversable and ArrayAccess, object giv
我需要转型 xyz[3].aaa[1].bbb[2].jjj 至 getXyz(3).getAaa(1).getBbb(2).getJjj() 使用JDT核心。 用一些 getter 方法替换 Arr
这是我尝试实现 https://www.php.net/manual/en/class.iterator.php对于 ArrayAccess。许多示例使用容器数组作为私有(private)成员变量;但
我有一个对象,它是对象的集合,表现得像一个数组。它是一个数据库结果对象。类似于以下内容: $users = User::get(); foreach ($users as $user) ech
在 PHP 中实现 ArrayAccess 接口(interface),我们可以访问对象属性作为数组键。让对象的行为像数组有什么好处? 就像我看到使用 ArrayAccess Interface 实现
我有以下文件: obj = new obj; } } // obj taken from PHP ArrayAccess page as example, contents not imp
是否可以允许实现 ArrayAccess 的数组或对象? 例如: class Config implements ArrayAccess { ... } class I_Use_A_Confi
在PHP中,一个类可以实现ArrayAccess接口(interface),所以类可以像这样被实例化和访问: class MyClass implements ArrayAccess { prot
我是一名优秀的程序员,十分优秀!