类中嵌套类,再嵌套数组和类,整糊涂了,求解
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$是乘方的指數。下面我們將透過幾種不同的方法來實現這個計算。方法一:使用**運
