PHP 对象父/子递归

2024-01-11

我有一个父子面向对象关系。父对象有许多子对象,每个子对象都通过引用知道它的父对象。

父母也可以是孩子(基本上它是一棵树).

当我做一个var_dump()在根对象上它说[“父”]=>递归很多次,生成的描述会很长。

我想知道我是否做错了什么。如果是,我对“最佳实践”感兴趣。

谢谢您的帮助!


你没有做错任何事;您有一个对其子级有引用的父级,并且每个子级都有对其父级的引用。当你var_dump()根对象,它迭代子对象以打印它们,并且由于每个子对象都有对父对象的引用,因此它会返回。因为这通常会导致无限循环(父 -> 子 -> 父 -> 子 -> ...),PHP 会保留一个已经访问过的对象列表,当遇到一个时,它不会尝试转储再次打印,但打印出“RECURSION”。

唯一需要注意的是 PHP 使用引用计数来进行垃圾收集,并且像这样的循环结构本身不会解析。因此,您的脚本将泄漏内存,这可能是问题,也可能不是问题。要解决这个问题,您需要手动清理:在父对象超出范围之前,您需要将所有父指针设置为 null。

也可以看看:http://bugs.php.net/bug.php?id=33595 http://bugs.php.net/bug.php?id=33595

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 对象父/子递归 的相关文章

  • str_word_count 似乎不适用于俄语

    当我在俄语中使用 str word count 时 我的字数统计很差 我配置为 UTF 8 运行 php 5 5 28 以下代码返回 1 echo str word count 1963 60
  • 会话变量从 while 循环发送特定变量

    我有这个简单的while 循环它从 mysql 查询中检索数据并在我的主页上显示几个链接 我想避免使用 php get 函数并将查询字符串添加到我的网址中 我正在考虑使用会话变量 但我需要帮助 而且我很确定这是无法完成的 当访问者单击 wh
  • PHP 如何使用比较运算符比较字符串?

    我正在使用比较运算符来比较字符串 我需要对以下两个比较及其结果进行某种解释 if ai gt i echo Yes else echo No output No 为什么这些会这样输出 if ia gt i echo Yes else ech
  • wordpressfunctions.php - 为每个帖子类别使用不同的页面模板

    我想连接到 save post 函数 找出帖子所属的类别 然后为每个类别中的帖子分配不同的页面模板 我已经尝试了大约 30 个不同的版本 但都没有成功 有人可以帮我指出正确的方向吗 add action save post assign c
  • 正则表达式匹配IP地址[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是正则表达式的新手 我想使用preg match函数用于查找字符串是否为 IP 地址 例如 string 10 0 0 1 preg m
  • 使用 PHP 发送器和 Swift 在后台未收到 IOS GCM 推送通知

    我正在努力让后台通知在带有 GCM 的 IOS 上工作 非后台通知已经可以工作了 以下是我集成后台通知的步骤 在 UIBackgroundmodes 中启用远程通知标签 将内容可用密钥添加到我的通知负载中 在我的委托中编写 applicat
  • Facebook 墙写应用

    我想知道我是否可以编写一个应用程序 它可以是我所有朋友的列表 只需在我选择的朋友的墙上发布一条消息即可 不是消息 而是墙上的帖子 所以看来我去了他们的墙并写了一条消息 他们不知道有一个应用程序正在向他们推送消息 也可以用 python 编写
  • WordPress Loop:如何将每 3 个帖子包装到一个 div 中?

    我正在尝试这个 div div 但这不起作用 谢谢你 感谢各位的支持 我尝试了两种解决方案 但都不起作用 我最终做到了这
  • 如何从外部域设置 iframe 内部的样式?

    我有一个网站 其中嵌入了来自 3 个不同域的 3 个 iframe 每个 iframe 都位于单独的页面上 将样式表应用于所有 3 个 iframe 的最佳方法是什么 谢谢你 这可以在某些网站上完成 但由于 同源政策 而并非全部 Twitt
  • 以编程方式将 Magento 订单标记为完整

    当我从第三方服务收到特定响应时 我尝试将 处理 订单标记为 完成 我已经为此做好了一切设置 但唯一的问题是订单仍处于处理状态 我正在生成发票 不过我认为我不需要这个 因为每个项目在 Magento 后端都被标记为 已开票 和发货 如下所示
  • session_regenerate_id(true) ajax 请求或快速刷新时的无效会话

    为了避免会话固定 我在每个 PHP 页面的开头使用以下代码 session set cookie params 900 domain 1 1 session start session regenerate id true 但如果页面刷新太
  • PHP imagettftext 返回的边界框与渲染的边界框不同

    我正在使用 imagettftext 渲染 PNG 文件 对 imagettftext 的调用返回渲染文本的边界框 但仔细检查后发现 文本的渲染稍微超出了它自己的边界框 边界框是正确的 我检查了图像的像素坐标 但文本位置不正确 它输出这个
  • PHP Define() 似乎不能与 include() 一起使用

    我一直在尝试 OO PHP 目前拥有三个文件 我有一个 class lib php 目前它只有一个databaseServer 类 一个index php 文件和一个definitions php 文件 我想将所有敏感数据库信息放入定义文件
  • 获取 Woocommerce 单一产品页面中的产品类别名称和描述

    我一直在使用 WooCommerce Codex 但我似乎无法显示数据 我只想显示产品类别和描述 以在我自己的自定义布局的单个产品页面上显示 如下所示 由于一个产品可以有多个产品类别 因此您需要使用 foreach 循环 这 term变量是
  • PHP APC 加载 apc.so 时出错

    我最近通过 WHM 面板 Web 主机管理器 在我们的服务器上安装了 PHP APC 安装成功后 我以为一切都很好 然而第二天我注意到我们的 error log 文件变得相当大 经过检查我多次注意到以下行 PHP 警告 PHP 启动 无法加
  • mysql 触发器与 php 脚本

    我有下一个 mysql 触发器 DELIMITER CREATE TRIGGER Test Insert BEFORE INSERT ON sat clientLocation FOR EACH ROW BEGIN DECLARE cmd
  • 编辑表单以清理/验证电话号码

    我对 PHP 的经验非常有限 我真的希望有人可以帮助我 我想要做的是清理 验证输入的电话号码 以便只允许使用数字 我想我需要使用FILTER SANITIZE NUMBER INT但我不确定在哪里或如何使用它 这是我的代码
  • 如何使用symfony2中的findOneBy方法返回数组而不是对象?

    我有一种情况 我想使用 symfony2 中的 findOneBy id 方法查询数据库 namePosting this gt getDoctrine gt getRepository MyBundle Users gt findOneB
  • 如何使用 PHP 读取/显示 XML

    有没有办法使用 PHP 读取 external xml 来自不同网站的 xml 文件 我知道有一种方法可以使用 JavaScript 读取 XML 但前提是它们都位于同一根目录中 您能否提供有关如何获取 xml 文件的示例 然后阅读以下内容
  • PHP 中的 imagecolortransparent 不起作用

    我想改变图像中的白色 http www arso gov si vreme napovedi 20in 20podatki radar gif http www arso gov si vreme napovedi 20in 20podat

随机推荐

  • 使用 jQuery 提交后清除表单

    刷新后清除此表单的最简单方法是什么 我尝试过的方法将清除表单但不会提交到数据库 其他人可以向我解释执行此操作的最佳方法吗
  • 如何制作一个简单的基于视图的 NSOutlineView?

    出于学习目的 我想将基于单元格的 NSOutlineView 转换为基于视图的 NSOutlineView 基本上我想要以下内容 我想要一个 图像和文本表格单元格视图 而不是普通的单元格 图像可以是库存 NSApplicationIcon
  • 在 ECMAScript 中检查空字符串时,为什么应该使用 string.length == 0 而不是 string == "" ?

    我当前项目中的大多数开发人员都使用一种 对我来说 奇怪的方式来检查 ECMAScript 中的空字符串 if theString length 0 string is empty 我通常会这样写 if theString string is
  • 如何屏蔽IE8及以下版本?

    我们刚刚完成 Web 应用程序的开发 我们想要阻止 Internet Explorer 8 及以下版本 实现这一目标的最佳方法是什么 我找到了一种阻止 IE6 的方法 但是教程 http css tricks com ie 6 blocke
  • 如何左对齐 pandas `to_string()` 中的列值?

    我想将 pandas 数据框保存到文件中to string 但想要左对齐列值 和to string justify left 只有列标签左对齐 例如与 pd DataFrame col1 123 1234 col2 1 444441234
  • WooCommerce:检查产品是否缺货且不允许缺货

    如何检查产品是否缺货 库存数量为 0 并且不允许延期交货 由于某种原因 以下代码不起作用 add action woocommerce before add to cart button show stock single function
  • 如何将元数据添加到 Firebase 身份验证

    我需要在使用 firebase 身份验证的 google 登录期间传递自定义值 device id 随后通过侦听身份验证事件触发器从云函数获取该值 然后将该值添加到 Firestore 据我所知 您可以将值作为 http 触发器的查询参数传
  • Microsoft Edge 中的像素化图像缩小尺寸

    我最近为我的网站制作了一个分辨率为 400x400 的徽标 在我测试过的任何其他浏览器中 它可以缩小到 40x40 但在 Edge 中表现得很奇怪 每次刷新页面时 它都会在瞬间正确呈现 然后在页面完成加载后变为丑陋的像素化外观 页面完全加载
  • 如何使用 matplotlib 自定义甘特图并在图表上显示指示当前时间的垂直线?

    这是我的 Python 代码 它基本上绘制了甘特图 import pandas as pd import random from datetime import datetime import matplotlib dates as mda
  • 使用 Swift 结构和 id 时,SwiftUI 让 ScrollViewReader 滚动

    我有几个简单的 Swift UI 屏幕 全部运行在一个结构中 该结构定义了小部件的视图 名称及其进入的顺序 我试图创建一个水平列表 其中每个按钮在按下时都会在滚动视图中居中 这就是我想做的 我遇到的问题是我无法让 ScrollViewRea
  • Mac 上的 Podman 在运行 podman machine init 时抛出错误

    使用brew安装了podman brew install podman 尝试使用启动VMpodman machine init但收到以下错误 Extracting compressed file Error cannot overwrite
  • Liferay 日志记录级别

    有没有办法设置Liferay的global日志记录级别 我知道它是服务器管理中的控制台 但我想将全局级别设置为包级别 Thanks 由于 log4j 的配置方式 任何全局设置都可以被包级别设置覆盖 您可以删除任何配置单独的包 如果有 然后设
  • 从文件上传读取 url 时图像自动旋转(当它是大图像时)?

    下面这段代码 function readURL input if input files input files 0 var reader new FileReader reader onload function e img attr s
  • ASP.Net @符号

    我正在尝试遵循 ASP Net 的一些教程 但在我的一生中 我只是不明白 当符号位于变量之前时 它会执行此操作 我认为这只是会话变量或 request form 的快捷方式 但我在几个地方尝试过 但没有任何运气 当我将它随机放在某个地方时
  • IntelliJ、Java 格式化:强制空块位于一行

    是否可以告诉 IntelliJ 在格式化 Java 文件时将空块放在一行上 我想要这个 Override public void onClickPositive int tag Object payload 自动变成这样 Override
  • 添加/删除视觉/逻辑子项时收到通知

    我目前正在寻找一种在将孩子添加到视觉或逻辑孩子中时收到通知的方法 我知道 Visual OnVisualChildrenChanged 方法 但它不适用于我 因为我不能总是继承和重写此函数 我正在寻找一个活动 那么 有没有办法在添加子项时通
  • 删除/隐藏 Total_sales WooCommerce 自定义字段

    有没有办法去除total sales显示时自定义字段the meta对于一个产品 我可以将编辑器中的条目更改为其他名称和值 但它会神奇地再次出现并且不会被删除 我会为此使用 the meta key 过滤器 您有几种选择 当然您可以将它们组
  • 检查变量是否在 SASS 中定义

    正如标题所说 我正在尝试检查 SASS 中是否定义了变量 如果这有什么不同的话 我正在使用指南针 我发现 Ruby 的等价物是 defined foo 在黑暗中尝试了一下 但它只是给了我错误 defined expected was 我找到
  • 调整 tiff 大小并保持透明度和 c#

    我正在尝试调整 RGB 8 位 Tif 的大小并保持其在 c 中的透明度 我尝试过以下代码 using Image thumbnail new Bitmap 1500 1500 using Bitmap source new Bitmap
  • PHP 对象父/子递归

    我有一个父子面向对象关系 父对象有许多子对象 每个子对象都通过引用知道它的父对象 父母也可以是孩子 基本上它是一棵树 当我做一个var dump 在根对象上它说 父 gt 递归很多次 生成的描述会很长 我想知道我是否做错了什么 如果是 我对