数组内的数组内的PHP对象

时间:2018-08-13 21:59:17

标签: php arrays object

我在数组中有一个对象,该对象本身在数组中-像这样:

Array ( 
    [0] => Array 
        ( 
             [year] => 2010 
             [0] => stdClass Object 
                    ( 
                           [ticker] => AAA
                           [exchange] => LSE
                           [cur_value] => 100 
                     )
             [1] => stdClass Object 
                    ( 
                           [ticker] => BBB
                           [exchange] => LSE
                           [cur_value] => 200 
                     )
          )
    [1] => Array 
          ( 
              [year] => 2015 
              [0] => stdClass Object 
                        ( 
                            [ticker] => AAA
                            [exchange] => LSE
                            [cur_value] => 100 
                         )
                 [1] => stdClass Object 
                        ( 
                            [ticker] => BBB
                            [exchange] => LSE
                            [cur_value] => 200 
                         )
              )
           )

我希望能够遍历第一级数组,然后使用其中包含的数据创建一个表。该表将使用“年”作为名称,而stdClass对象将是进入该表的数据。

我遇到的问题是['year']干扰了表格的第一行,而我似乎无法跳过它-例如通过添加一个计数器并跳过第一个foreach迭代或使用is_object。

我得到的错误(并且我理解为什么得到)是“您正在尝试获取非对象的属性”。

我看过其他SO问题,但我无法找到这个确切的问题,例如,这个问题-Notice: Trying to get property of non-object error

有人能帮我跳过那一年吗?我拥有的PHP代码如下:

foreach($portfolios as $portfolio){
  echo $portfolio['year'];
  echo '<table>';
  echo '<tr>';
     echo '<th>Ticker</th>';
     echo '<th>Exchange</th>';
     echo '<th>Value</th>';
  echo '</tr>';
  foreach($portfolio as $folio){
     echo '<tr>';
     echo '<td>'.$folio->ticker.'</td>';
     echo '<td>'.$folio->exchange.'</td>';
     echo '<td>'.$folio->cur_value.'</td>';
     echo '</tr>';
   }
  echo '</table>';

}

1 个答案:

答案 0 :(得分:0)

您可以使用array_splice()删除数组的第一个元素,如下所示:

$splicedArray = array_splice($portfolio, 0, 1);

foreach(splicedArray as $folio) {
    echo '<tr>';
    echo '<td>'.$folio->ticker.'</td>';
    echo '<td>'.$folio->exchange.'</td>';
    echo '<td>'.$folio->cur_value.'</td>';
    echo '</tr>';
}

您可以查看array_shift(),也可以使用键并在循环中跳过该迭代。有很多解决这个问题的可能性。

或者非常简单地使用unset。