Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,我可以使对象的行为与数组有多相似?我该怎么做呢?_Php_Arrays_Object_Memory Management - Fatal编程技术网

在php中,我可以使对象的行为与数组有多相似?我该怎么做呢?

在php中,我可以使对象的行为与数组有多相似?我该怎么做呢?,php,arrays,object,memory-management,Php,Arrays,Object,Memory Management,我知道通过实现iterable可以使对象能够foreach覆盖。我想更进一步,让一个对象像一个数组一样在尽可能多的需要数组的地方做出反应 (这样做的原因是因为我从数据库中选择数据,默认情况下生成的语句对象在内存上非常好,而数组形式的完整数据集倾向于将内存使用率纳入轨道。我希望在数组类型为不知道这是否是你所需要的,但你可以: // $your_object foreach(get_object_vars($your_object) as $property=>$value) /* do s

我知道通过实现
iterable
可以使对象能够
foreach
覆盖。我想更进一步,让一个对象像一个数组一样在尽可能多的需要数组的地方做出反应


(这样做的原因是因为我从数据库中选择数据,默认情况下生成的语句对象在内存上非常好,而数组形式的完整数据集倾向于将内存使用率纳入轨道。我希望在数组类型为不知道这是否是你所需要的,但你可以:

// $your_object

foreach(get_object_vars($your_object) as $property=>$value) /* do something */ ;
如果我没记错的话,你可以(互换地)在任何需要的地方使用打字

也许它不被认为是OOP糖果,但它是必不可少的东西
  • 您可以使对象与
    count
  • 您可以实现,这样像
    $obj['index']
    这样的语法就可以工作了
  • 就像您所做的那样,您可以实现或删除
  • 你不能做的事:

    您无法使其与工作,除了这些,哪种工作,而是依赖于将对象转换为数组,这是通过获取其属性来完成的:

    • 结束
      上一个
      下一个
      重置
      当前
    • array\u walk
      array\u walk\u recursive
      array\u key\u存在

    看看
    阵列访问
    可计数
    接口。前者允许使用
    $obj[…]
    访问对象,后者允许
    计数($obj)

    谢谢你的分解,我要看看我能做些什么,尽管我意识到我的问题稍微更深/更复杂,所以我要在脑海中重新表述一个问题。(我意识到我的问题是,当数组是什么时,数据库语句对象不会像数组一样反应,尽管也许我可以简单地将语句对象包装在实现上述内容的更合适的对象中)即使在需要阵列时,***也不会像阵列一样工作,而且ArrayAccess接口似乎是该问题的解决方案。