0

我有一个包含二维数组的对象,但我似乎无法使输出正常工作。

我看起来像这样的数据:

foreach($myObj as $key){
    foreach($myObj[$key] as $key2){
        echo '['.$key.','.$key2.'], ';
    }
} 

但我没有得到任何输出,只是一个空白页。我的错误日志中也没有错误。

我的对象结构如下:

coOrds Object
(
    [xy:coOrds:private] => Array
        (
            [10] => Array //value 10 would be $key
                (
                    [10] => //10 here would be $key2
                    [11] => 
                    [12] => 
                )

            [11] => Array
                (
                    [10] => 
                    [11] => 
                    [12] => 
                )

        )
}

我的循环做错了什么?

4

1 回答 1

1

这应该有效:

foreach($myObj as $key => $array){
    foreach($array as $key2 => $array2){
        echo '['.$key.','.$key2.'], ';
    }
} 

编辑

由于xy是私有的,您应该:

  • 公开
  • 创建一个简单的getterpublic function getXY() { return $this->xy; }

然后:

foreach($myObj->getXY() as $key => $array){
    foreach($array as $key2 => $array2){
        echo '['.$key.','.$key2.'], ';
    }
} 

编辑 2

工作样本:

class coOrds {
  public $xy = array(10 => array(1, 2, 3), 11 => array(4,5,6));
}

$myObj = new coOrds();

foreach($myObj->xy as $key => $array){
    foreach($array as $key2 => $array2){
        echo '['.$key.','.$key2.'], ';
    }
} 

输出:

[10,0], [10,1], [10,2], [11,0], [11,1], [11,2], 
于 2013-02-23T02:39:15.373 回答