类中嵌套类,再嵌套数组和类,整糊涂了,求解
class Editor{ var $Error = '' ; var $Pages; function vol() { $Pages = array(); $this->Pages[] = new page; }}class Page{ var $Id = ''; var $BackImage; function vol() { $BackImage = array(); $this->$BackImage[] = new Decorator; }}class Decorator{ var $Ext = '';}_________________________________________________________//我在使用这个类的时候$Editor = new Editor;$Editor->vol();$Editor->Pages[0]->vol(); //对象定义完成?我只初始化了Pages[0]下的class Decorator对象,为什么下面我可以直接使用page[2]和所有page数组其他元素中的class Decorator ,而不需要我$Editor->Pages[2]->vol()呢?$Editor->Pages[0]->BackImage[0]->Ext = 'str' ;$Editor->Pages[2]->BackImage[2]->Ext = 'str2' ;$Editor->Pages[5]->BackImage[4]->Ext = 'str6' ; //这样使用没有报错
回复讨论(解决方案)
这个应该是会有 警告的
class Editor{ var $Error = '' ; var $Pages; function vol() { $Pages = array(); $this->Pages[] = new page; }} class Page{ var $Id = ''; var $BackImage; function vol() { $BackImage = array();// $this->$BackImage[] = new Decorator; //Fatal error: Cannot use [] for reading $this->BackImage[] = new Decorator; //只能这样写,因为 $BackImage 是数组 }} class Decorator{ var $Ext = '';} $Editor = new Editor;$Editor->vol();$Editor->Pages[0]->vol(); $Editor->Pages[0]->BackImage[0]->Ext = 'str' ;$Editor->Pages[2]->BackImage[2]->Ext = 'str2'; //Warning: Creating default object from empty value
连语法检查都通不过!
我来试试
[ color=#993300]感觉找到原因了:[/color]
//我在使用这个类的时候
$Editor = new Editor;
$Editor->vol();
$Editor->Pages[0]->vol(); //对象定义完成?我只初始化了Pages[0]下的class Decorator对象,
//为什么下面我可以直接使用page[2]和所有page数组其他元素中的class Decorator ,
//而不需要我$Editor->Pages[2]->vol()呢?
//$Editor->name = "xlc";
echo "
";
$Editor->Pages[10]->BackImage[10]->Name = 'str' ;
echo $Editor->Pages[10]->BackImage[10]->Name;
var_dump($Editor);
输出内容为:
strobject(Editor)#1 (2) { ["Error"]=> string(0) "" ["Pages"]=> array(2) { [0]=> object(Page)#2 (2) { ["Id"]=> string(0) "" ["BackImage"]=> array(1) { [0]=> object(Decorator)#3 (1) { ["Ext"]=> string(0) "" } } } [10]=> object(stdClass)#4 (1) { ["BackImage"]=> array(1) { [10]=> object(stdClass)#5 (1) { ["Name"]=> string(3) "str" } } } } }
请查数据Pages[10]的键值,其实他创建的是一人stdClass类页并不是Page类的一个实例,这个应该是php5特性吧。
刚开始以为是魔术方法里面问题,但后来确定了一下,不是的。
没有报错应该是你的php设置了报告级别
{
$BackImage = array(1,2,3,4);
$this->BackImage[] = new Decorator;
//这里增加两句或者可帮助你理解
print_r($BackImage);
print_r($this->BackImage);
}
你需要了解一下类的属性和类内出现的一般变量的异同
建议你应该去学习 类的继承,能理清并简化你上面的思路,减少对象链、方法链的使用
谢谢楼上各位,有你们真好!再次感谢!!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

如何用Python编写求解最小公倍数的算法?最小公倍数是指两个数中能够整除这两个数的最小整数。在数学中,求解最小公倍数是一项基本的数学任务,而在计算机编程中,我们可以使用Python来编写一个求解最小公倍数的算法。下面将介绍基本的最小公倍数算法,并给出具体的代码示例。最小公倍数的数学定义是:如果a能被n整除且b能被n整除,则n是a和b的最小公倍数。要求解最小

标题:用C语言编程实现最大公约数求解最大公约数(GreatestCommonDivisor,简称GCD)是指能够同时整除两个或多个整数的最大正整数。求解最大公约数对于一些算法和问题解决非常有帮助。在本文中,将通过C语言编程来实现求解最大公约数的功能,并提供具体的代码示例。在C语言中,可以使用欧几里得算法(EuclideanAlgorithm)来求解最大

Numpy是Python中著名的科学计算库,为处理大型多维数组和矩阵提供了丰富的功能和高效的计算方法。在数据科学和机器学习领域,矩阵的逆运算是一项常见的任务。在本文中,我将介绍使用Numpy库快速求解矩阵逆的方法,并提供具体的代码示例。首先,让我们通过安装Numpy库引入它到我们的Python环境中。可以使用以下命令在终端中安装Numpy:pipinsta

如何使用Python实现求解阶乘的算法?阶乘是数学中的重要概念,指的是一个数乘上其自身减一,再乘上自身减一减一,以此类推,直到乘到1为止。阶乘通常用符号"!"来表示,例如5的阶乘表示为5!,计算公式为:5!=5×4×3×2×1=120。在Python中,我们可以使用循环来实现一个简单的阶乘算法。下面给出一个示例代码:deffacto

学习C语言如何求解最大公约数,需要具体代码示例最大公约数(GreatestCommonDivisor,简称GCD)是指两个或多个整数中能够整除它们的最大正整数。在计算机编程中经常会用到最大公约数,特别是在处理分数、化简分数以及求解最简整数比例等问题时。本篇文章将介绍如何使用C语言来求解最大公约数,并给出具体的代码示例。求解最大公约数的方法有很多种,例如欧

在这里,我们将看到一个与模方程相关的有趣问题。假设我们有两个值A和B。我们必须找到变量X可以取的可能值的数量,使得(AmodX)=B成立。假设A为26,B为2。所以X的首选值将是{3,4,6,8,12,24},因此计数为6。这就是答案。让我们看一下算法以更好地理解。算法possibleWayCount(a,b)−begin ifa=b,thenthereareinfinitesolutions ifa

斐波那契数列是一个数列,其中下一项是前两项之和。斐波那契数列的前两项是0后跟1。在这个问题中,我们会发现斐波那契数列中的第n个数字。为此,我们将计算所有数字并打印n项。Input:8Output:011235813说明0+1=11+1=21+2=32+3=5使用For循环将前两项求和作为下一项示例#include<iostream>usingnamespacestd;intmain(){ intt1=0,t2=1,n,i,nextTerm;&am

标题:PHP中如何求解2的乘方?具体代码示例分享在PHP编程中,求解数的乘方是一个常见的需求,特别是在一些算法和数学计算中。本文将详细探讨如何在PHP中求解2的乘方,并提供具体的代码示例供大家参考。在PHP中,可以使用幂运算符**来计算乘方。对于2的乘方,即计算$2^n$,其中$n$是乘方的指数。下面我们将通过几种不同的方法来实现这个计算。方法一:使用**运
