2010-06-15 5 views
0

is_array($src2->crit) génère une erreur "Propriété non définie: stdClass :: $ crit".

La ligne de lancer l'erreur est: if(is_array($src2->crit) && count($src->crit) > 0){

$src2->crit est initialisé ici.

$src2->crit = array(); 
$src2->crit[0] = new dataSet(); 
$src2->crit[0]->tblName = $tbl2; 
$src2->crit[0]->colName = "ID"; 
$src2->crit[0]->val = $elm->editID; 

Lorsque vous testez $src2->crit avec ce code.

print("\$src->crit is a ".$src->crit."<br />"); 
print_r($src->crit); print("<br />"); 

Ceci est renvoyé.

$src2->crit is a Array 
Array ([0] => dataSet Object ([tblName] => sExam [colName] => ID [val] => 10)) 

Qu'est-ce que je ne vois pas/ne comprends pas correctement? Si print("\$src2->crit is a ".$src->crit."<br />") renvoie qu'il s'agit d'un tableau, pourquoi is_array($src2->$crit) génère-t-il une erreur?

+1

Je suis confus, vous dites $ elm-> crit un endroit et $ src-> crit dans un autre ... – Lizard

Répondre

0

Impossible de reproduire:

<?php 
$src2 = new stdClass(); 
$src2->crit = array(); 
$src2->crit[0] = new stdClass(); 
$src2->crit[0]->tblName = "whatever"; 
$src2->crit[0]->colName = "ID"; 
$src2->crit[0]->val = "value"; 
var_dump(is_array($src2->crit)); 

givesbool(true).

+0

Je vais vérifier pour voir si quelque chose d'autre le jette –

0

Votre plus gros problème (d'après l'information que vous avez posté dans la question) est-il que vous ayez référencé un nom différent?

$elm->crit 
$src->crit 
+0

elm est la classe qui est en cours affecté à la variable src. –

+0

Nous aurons besoin de plus de code affiché alors, ce que vous avez posté n'a pas de sens – Lizard

0

print("\$src2->crit is a ".$src->crit."<br />")

is_array($src2->$crit)

Une de ces choses est pas comme l'autre! On référence la propriété crit de l'objet $src2.

L'autre fait référence à la propriété $crit, ce qui signifie que la valeur de la variable $crit est évaluée en tant que chaîne, puis cette valeur de chaîne est utilisée comme nom de propriété.

Qu'est-ce que $crit défini comme? Je parie que ce n'est pas la chaîne !