类中嵌套类,再嵌套数组和类,整糊涂了,求解
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);
}
你需要了解一下类的属性和类内出现的一般变量的异同
建议你应该去学习 类的继承,能理清并简化你上面的思路,减少对象链、方法链的使用
谢谢楼上各位,有你们真好!再次感谢!!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Wie schreibe ich einen Algorithmus, um das kleinste gemeinsame Vielfache in Python zu finden? Das kleinste gemeinsame Vielfache ist die kleinste ganze Zahl zwischen zwei Zahlen, die die beiden Zahlen teilen kann. In der Mathematik ist das Lösen des kleinsten gemeinsamen Vielfachen eine grundlegende mathematische Aufgabe, und in der Computerprogrammierung können wir Python verwenden, um einen Algorithmus zum Lösen des kleinsten gemeinsamen Vielfachen zu schreiben. Im Folgenden wird der grundlegende Algorithmus für das kleinste gemeinsame Vielfache vorgestellt und spezifische Codebeispiele gegeben. Die mathematische Definition des kleinsten gemeinsamen Vielfachen lautet: Wenn a durch n teilbar ist und b durch n teilbar ist, dann ist n das kleinste gemeinsame Vielfache von a und b. Um das Minimum zu lösen

Titel: Verwenden Sie die C-Sprachprogrammierung, um die Lösung für den größten gemeinsamen Teiler zu implementieren. Der größte gemeinsame Teiler (kurz: Greatest Common Divisor, GCD) bezieht sich auf die größte positive ganze Zahl, die zwei oder mehr ganze Zahlen gleichzeitig teilen kann. Die Lösung nach dem größten gemeinsamen Teiler kann für einige Algorithmen und die Problemlösung sehr hilfreich sein. In diesem Artikel wird die Funktion zum Ermitteln des größten gemeinsamen Teilers durch C-Sprachprogrammierung implementiert und spezifische Codebeispiele bereitgestellt. In der Sprache C können Sie den Euklidischen Algorithmus verwenden, um das Maximum zu lösen

Numpy ist eine bekannte Python-Bibliothek für wissenschaftliches Rechnen, die umfangreiche Funktionen und effiziente Rechenmethoden für die Verarbeitung großer mehrdimensionaler Arrays und Matrizen bietet. In der Welt der Datenwissenschaft und des maschinellen Lernens ist die Matrixinversion eine häufige Aufgabe. In diesem Artikel werde ich vorstellen, wie man die Matrixinverse mithilfe der Numpy-Bibliothek schnell löst, und spezifische Codebeispiele bereitstellen. Lassen Sie uns zunächst die Numpy-Bibliothek durch Installation in unsere Python-Umgebung einführen. Numpy kann mit dem folgenden Befehl im Terminal installiert werden: pipinsta

Wie implementiert man mit Python den Algorithmus zur faktoriellen Lösung? Fakultät ist ein wichtiges Konzept in der Mathematik. Es bedeutet, dass eine Zahl mit sich selbst minus eins multipliziert wird, dann mit sich selbst minus eins multipliziert wird und so weiter, bis sie 1 ergibt. Die Fakultät wird normalerweise durch das Symbol „!“ dargestellt. Die Fakultät von 5 wird beispielsweise als 5! ausgedrückt und die Berechnungsformel lautet: 5!=5×4×3×2×1=120. In Python können wir Schleifen verwenden, um einen einfachen faktoriellen Algorithmus zu implementieren. Nachfolgend finden Sie einen Beispielcode: deffacto

Um zu lernen, wie man den größten gemeinsamen Teiler in der C-Sprache findet, benötigen Sie spezifische Codebeispiele. Der größte gemeinsame Teiler (kurz: Greatest Common Divisor, GCD) bezieht sich auf die größte positive ganze Zahl unter zwei oder mehr ganzen Zahlen, die sie teilen kann. Der größte gemeinsame Nenner wird häufig in der Computerprogrammierung verwendet, insbesondere beim Umgang mit Brüchen, der Vereinfachung von Brüchen und der Lösung von Problemen wie dem einfachsten Verhältnis ganzer Zahlen. In diesem Artikel wird erläutert, wie Sie mithilfe der C-Sprache den größten gemeinsamen Teiler ermitteln, und es werden spezifische Codebeispiele aufgeführt. Es gibt viele Möglichkeiten, den größten gemeinsamen Teiler zu lösen, beispielsweise den Euklidischen

Hier sehen wir ein interessantes Problem im Zusammenhang mit modularen Gleichungen. Nehmen wir an, wir haben zwei Werte A und B. Wir müssen die Anzahl der möglichen Werte ermitteln, die die Variable X annehmen kann, sodass (AmodX)=B gilt. Angenommen, A ist 26 und B ist 2. Der bevorzugte Wert von X wäre also {3,4,6,8,12,24}, daher die Zählung 6. Das ist die Antwort. Werfen wir einen Blick auf den Algorithmus, um ihn besser zu verstehen. Algorithmus möglichWayCount(a,b)−begin ifa=b,thenthereinfinitesolutions ifa

Die Fibonacci-Folge ist eine Zahlenfolge, bei der der nächste Term die Summe der beiden vorherigen Terme ist. Die ersten beiden Terme der Fibonacci-Folge sind 0, gefolgt von 1. In diesem Problem werden wir die n-te Zahl in der Fibonacci-Folge finden. Dazu zählen wir alle Zahlen und geben n Elemente aus. Eingabe:8Ausgabe:011235813 Beschreibung 0+1=11+1=21+2=32+3=5 Verwenden Sie eine For-Schleife, um die ersten beiden Elemente als nächstes Element zu summieren. Beispiel #include<iostream>usingnamespacestd;intmain(){ intt1 = 0,t2=1,n,i,nextTerm;&am

Titel: Wie löst man in PHP nach Zweierpotenzen? Spezifische Codebeispiele werden in der PHP-Programmierung geteilt. Das Lösen der Potenz von Zahlen ist eine häufige Anforderung, insbesondere bei einigen Algorithmen und mathematischen Berechnungen. In diesem Artikel wird ausführlich erläutert, wie die Zweierpotenz in PHP gelöst werden kann, und es werden spezifische Codebeispiele als Referenz bereitgestellt. In PHP können Sie den Potenzierungsoperator ** verwenden, um Potenzen zu berechnen. Berechnen Sie für Zweierpotenzen $2^n$, wobei $n$ der Exponent der Potenz ist. Im Folgenden werden wir diese Berechnung auf verschiedene Arten umsetzen. Methode 1: Nutzen Sie **Glück
