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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Comment écrire un algorithme pour trouver le plus petit commun multiple en Python ? Le plus petit commun multiple est le plus petit entier entre deux nombres pouvant diviser les deux nombres. En mathématiques, la résolution du plus petit commun multiple est une tâche mathématique de base, et en programmation informatique, nous pouvons utiliser Python pour écrire un algorithme permettant de résoudre le plus petit commun multiple. Ce qui suit présentera l’algorithme multiple de base le moins courant et donnera des exemples de code spécifiques. La définition mathématique du plus petit commun multiple est la suivante : si a est divisible par n et b est divisible par n, alors n est le plus petit commun multiple de a et b. Pour résoudre le minimum

Numpy est une bibliothèque informatique scientifique bien connue en Python, qui fournit des fonctions riches et des méthodes informatiques efficaces pour traiter de grands tableaux et matrices multidimensionnels. Dans le monde de la science des données et de l’apprentissage automatique, l’inversion matricielle est une tâche courante. Dans cet article, je vais présenter comment résoudre rapidement l'inverse de la matrice à l'aide de la bibliothèque Numpy et fournir des exemples de code spécifiques. Tout d'abord, introduisons la bibliothèque Numpy dans notre environnement Python en l'installant. Numpy peut être installé dans le terminal à l'aide de la commande suivante : pipinsta

Titre : Utilisez la programmation en langage C pour implémenter la solution du plus grand diviseur commun. Le plus grand diviseur commun (Greatest Common Divisor, GCD en abrégé) fait référence au plus grand entier positif qui peut diviser deux entiers ou plus en même temps. La recherche du plus grand diviseur commun peut être très utile pour certains algorithmes et la résolution de problèmes. Dans cet article, la fonction de recherche du plus grand diviseur commun sera implémentée via la programmation en langage C, et des exemples de code spécifiques seront fournis. En langage C, vous pouvez utiliser l'algorithme euclidien pour résoudre le maximum

Comment utiliser Python pour implémenter l'algorithme de résolution factorielle ? Factorielle est un concept important en mathématiques. Elle fait référence à un nombre multiplié par lui-même moins un, puis multiplié par lui-même moins un, et ainsi de suite jusqu'à ce qu'il soit multiplié par 1. La factorielle est généralement représentée par le symbole "!". Par exemple, la factorielle de 5 est exprimée par 5!, et la formule de calcul est : 5!=5×4×3×2×1=120. En Python, nous pouvons utiliser des boucles pour implémenter un algorithme factoriel simple. Un exemple de code est donné ci-dessous : deffacto

Pour savoir comment trouver le plus grand diviseur commun en langage C, vous avez besoin d'exemples de code spécifiques. Le plus grand diviseur commun (Greatest Common Divisor, GCD en abrégé) fait référence au plus grand entier positif parmi deux ou plusieurs entiers pouvant les diviser. Le plus grand dénominateur commun est souvent utilisé en programmation informatique, en particulier lorsqu'il s'agit de traiter des fractions, de simplifier des fractions et de résoudre des problèmes tels que le rapport le plus simple d'entiers. Cet article explique comment utiliser le langage C pour trouver le plus grand diviseur commun et donne des exemples de code spécifiques. Il existe de nombreuses façons de résoudre le plus grand diviseur commun, comme Euclidien

La suite de Fibonacci est une suite de nombres dont le terme suivant est la somme des deux termes précédents. Les deux premiers termes de la suite de Fibonacci sont 0 suivi de 1. Dans ce problème, nous trouverons le nième nombre de la séquence de Fibonacci. Pour ce faire, nous allons compter tous les nombres et imprimer n éléments. Entrée : 8 Sortie : 011235813 Description 0+1=11+1=21+2=32+3=5 Utilisez une boucle For pour additionner les deux premiers éléments comme élément suivant Exemple #include<iostream>usingnamespacestd;intmain(){ intt1 = 0,t2=1,n,i,termesuivant;&am

Ici, nous verrons un problème intéressant lié aux équations modulaires. Disons que nous avons deux valeurs A et B. Il faut trouver le nombre de valeurs possibles que la variable X peut prendre telles que (AmodX)=B soit vraie. Supposons que A vaut 26 et B vaut 2. La valeur préférée de X serait donc {3,4,6,8,12,24}, d'où le nombre de 6. C'est la réponse. Jetons un coup d'œil à l'algorithme pour mieux comprendre. Algorithme possibleWayCount(a,b)−begin sia=b, alors il y a des solutions infinies sia

Titre : Comment résoudre des puissances de 2 en PHP ? Des exemples de code spécifiques sont partagés dans la programmation PHP. Résoudre la puissance des nombres est une exigence courante, en particulier dans certains algorithmes et calculs mathématiques. Cet article expliquera en détail comment résoudre la puissance de 2 en PHP et fournira des exemples de code spécifiques pour votre référence. En PHP, vous pouvez utiliser l'opérateur d'exponentiation ** pour calculer les puissances. Pour des puissances de 2, calculez $2^n$, où $n$ est l'exposant de la puissance. Ci-dessous, nous mettrons en œuvre ce calcul de différentes manières. Méthode 1 : Utilisez ** chance
