PHP-在数组中找不到索引
我有一个数组PHP-在数组中找不到索引,php,arrays,Php,Arrays,我有一个数组$attribGarden,看起来像这样: array(3) { [0]=> array(2) { ["property"]=> array(3) { ["typeKind"]=> string(9) "isolation" ["typeId"]=> int(76) ["valueId"]=> string(3) "386" } ["child
$attribGarden
,看起来像这样:
array(3) {
[0]=>
array(2) {
["property"]=>
array(3) {
["typeKind"]=>
string(9) "isolation"
["typeId"]=>
int(76)
["valueId"]=>
string(3) "386"
}
["children"]=>
array(2) {
[0]=>
array(2) {
["property"]=>
array(3) {
["typeKind"]=>
string(9) "isolation"
["typeId"]=>
int(79)
["valueId"]=>
string(3) "395"
}
....
....
....
我在同一页上还有一个函数:
function ____storeAttribGarden($data, $parent = 0){
foreach($data as $value){
if($value['property']['typeKind'] == 'isolation'){
// some action here
}
}
}
当代码执行时,会抛出以下错误:
未定义索引:第1743行E:\xyz\proc_product.php中的属性
//第1743行引用函数的if()条件
我试着打印(数组键($value))恰好在if
条件之前,并获得以下输出:
Array
(
[0] => property
[1] => children
)
打印($value)
给出以下信息:
Array
(
[property] => Array
(
[typeKind] => isolation
[typeId] => 76
[valueId] => 386
)
[children] => Array
(
[0] => Array
(
[property] => Array
(
[typeKind] => isolation
[typeId] => 79
[valueId] => 395
)
很明显,数组中有一个名为“property”的索引。但该功能无法识别它。有什么问题吗?我做错什么了吗
谢谢你的时间。起初我以为你只是把你的等级制度搞砸了。但是,我假设您通过的是
$attribGarden
,如下所示:
____storeAttribGarden($attribGarden);
如果是这样的话,那么请检查您是连续收到三个错误,还是仅收到一个错误。如果您只得到一个,那么$attribGarden
的结构可能不统一
要么是这样,要么是我最初的假设是正确的,而你的等级制度仍然是错误的。起初我以为你只是把你的等级制度搞砸了。但是,我假设您通过的是
$attribGarden
,如下所示:
____storeAttribGarden($attribGarden);
如果是这样的话,那么请检查您是连续收到三个错误,还是仅收到一个错误。如果您只得到一个,那么$attribGarden
的结构可能不统一
要么是这样,要么是我最初的假设是正确的,而您的层次结构仍然是不正确的。我认为Stephen是正确的,数据结构也不统一。一种简单的调试方法是在有问题的
if
语句前面加上以下一行:
if ( !isset( $value[ 'property' ][ 'typeKind' ) ) print_r( $value );
这将帮助您找到数据结构中出现混乱的地方…我认为Stephen是对的,数据结构并不统一。一种简单的调试方法是在有问题的
if
语句前面加上以下一行:
if ( !isset( $value[ 'property' ][ 'typeKind' ) ) print_r( $value );
这将帮助您找到数据结构中出现问题的地方…尝试
var\u dump
,这将为您提供更多信息,如字符串长度。确保其中没有不可见的字符。这并不能解决您当前的问题,但我建议您使用具有明确定义的属性/方法的面向对象方法。我认为您应该使用这样的方法:if($value[0]['property']['typeKind']=='isolation'){//someaction here}@WesleyMurch他做了array\u键($value)
。是否确定$data中的每个元素都有键属性
?请尝试var\u dump
,它会提供更多信息,如字符串长度。确保其中没有不可见的字符。这并不能解决您的直接问题,但我建议使用具有明确定义的属性/方法的面向对象方法我想你应该用这个:如果($value[0]['property']['typeKind']=='isolation'){//some action here}@WesleyMurch他做了array\u key($value)
。你确定$data中的每个元素都有key属性吗?
?谢谢你的提示,但是它说找不到索引“0”。顺便说一下,如果caluse中的数组没有数字索引。我完全重写了我的答案。;)谢谢Stephen!嵌套中的一个数组不包含索引属性
。由于数组太大,而实际函数是递归的,所以没有注意到它。非常感谢您的洞察力!没问题,很高兴我能帮忙!谢谢你的提示,但它说找不到索引“0”。顺便说一句,if
caluse中的数组没有数字索引。我完全重写了我的答案谢谢斯蒂芬!嵌套中的一个数组不包含索引属性
。由于数组太大,而实际函数是递归的,所以没有注意到它。非常感谢您的洞察力!没问题,很高兴我能帮忙!是的,法拉利!我的数组在某一点上没有索引。修正了,一切正常!谢谢你的指导!是的,法拉利!我的数组在某一点上没有索引。修正了,一切正常!谢谢你的指导!