array_values()不适用于ArrayAccess对象。也不array_keys()
为什么?
如果我可以访问,$object['key']我应该能够执行所有类型的数组操作
不,您误解了 ArrayAccess 的实用性。它不仅仅是一种数组的包装器。是的,实现它的标准示例使用一个私有$array变量,其功能由类包装,但这并不是一个特别有用的变量。通常,您也可以只使用数组。
ArrayAccess 的一个很好的例子是脚本不知道哪些变量可用。
作为一个相当愚蠢的例子,想象一个与远程服务器一起工作的对象。可以使用 API 跨网络读取、更新和删除该服务器上的资源。程序员决定要使用类似数组的语法包装该功能,因此在该服务器上$foo['bar'] = 'foobar'设置bar资源foobar并echo $foo['bar']检索它。如果不尝试所有可能的值,脚本就无法找出存在哪些键或值。
因此,ArrayAccess 允许使用数组语法来设置、更新、检索或删除具有类似数组语法的对象:不多也不少。
另一个接口Countable允许使用count(). 您可以在同一个类上使用这两个接口。理想情况下,会有更多这样的接口,也许包括那些可以执行array_values或 的接口array_keys,但目前它们不存在。
| 归档时间: |
|
| 查看次数: |
5827 次 |
| 最近记录: |