PHP中的数组()是否生成一个;未定义的属性:stdClass::$crit";错误

PHP中的数组()是否生成一个;未定义的属性:stdClass::$crit";错误,php,arrays,Php,Arrays,is_数组($src2->crit)正在生成“未定义属性:stdClass::$crit”错误 引发错误的行是: if(is_数组($src2->crit)&count($src->crit)>0){ $src2->crit在此初始化 $src2->crit = array(); $src2->crit[0] = new dataSet(); $src2->crit[0]->tblName = $tbl2; $src2->crit[0]->colName

is_数组($src2->crit)
正在生成“未定义属性:stdClass::$crit”错误

引发错误的行是:
if(is_数组($src2->crit)&count($src->crit)>0){

$src2->crit
在此初始化

$src2->crit = array();
 $src2->crit[0] = new dataSet();
 $src2->crit[0]->tblName = $tbl2;
 $src2->crit[0]->colName = "ID";
 $src2->crit[0]->val = $elm->editID;
使用此代码测试
$src2->crit

print("\$src->crit is a ".$src->crit."<br />");
print_r($src->crit); print("<br />");
我没有正确地看到/理解什么?如果
print(\$src2->crit是一个“$src->crit.”
返回它是一个数组,那么为什么
是数组($src2->$crit)
生成错误?

无法复制:

<?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));

看来您最大的问题(根据您在问题中发布的信息)是您引用了不同的变量名

$elm->crit
$src->crit
print(\$src2->crit是一个“$src->crit.”

is_数组($src2->$crit)

这些东西中的一个和另一个不一样

引用
$src2
对象的
crit
属性

另一个是引用
$crit
属性,这意味着将变量
$crit
的值计算为字符串,然后将该字符串值用作属性名称


$crit
的定义是什么?我敢打赌这不是字符串
'crit'

我很困惑,你说的是$elm->crit在一个地方,而$src->crit在另一个地方…elm是分配给src变量的类。我们需要发布更多的代码,你发布的内容不符合要求。我会检查是否还有其他内容扔掉它
$elm->crit
$src->crit