2012-09-07 149 views
2

我構建一個數組是這樣的:無法訪問空屬性

$result = $this->db->get($this->_table); 
foreach ($result->result_array() as $row) 
{ 
    $list->$row['categories_id'] = array('total_amount' => $row['total_amount'], 'other_stuff' => 'stuff'); 
} 

這給了我致命異常「無法訪問空屬性」

<?foreach ($category_list as $index => $row) {?> 
      <td><?=$row?></td> 
      <td><?=$list->$index['total_amount']?></td> 
    <?}?> 

但這個工程

<?foreach ($category_list as $index => $row) {?> 
      <td><?=$row?></td> 
      <? $temp = $list->$index; ?> 
      <td><?=$temp['total_amount']?></td> 
    <?}?> 

有沒有更好的方法從這個對象中獲得「總量」?

更妙的是 - 我怎麼能做出這麼對象進行這樣

echo $list->$index->total_amount 
+0

請給完整的源代碼。例如,什麼是$行? –

回答

1

啊,我看這個問題。

現在你正在使用它的方式你試圖訪問數組索引的元素'total_amount',而不是數組$ list - > $ index的元素total_amount`。當然,由於$ index只是一個數組鍵,並且是一個字符串或int,所以它不起作用。

這個怎麼樣:<td><?=$list->{$index}['total_amount']?></td>

關於你的最後一個問題(通過$訪問列表中值 - > $首頁 - > TOTAL_AMOUNT):你很可能投你的陣列將物品與(對象)。

$list->$row['categories_id'] = (object) array('total_amount' => $row['total_amount'], 'other_stuff' => 'stuff');

-------原來的答案-------

我不知道您的具體對象,但嘗試以下方法:

$transaction_list->index['total_amount']

注意索引前缺少的$?這是訪問類成員變量的實際方式。使用$時,你實際上正在做其他事情。

http://www.php.net/manual/en/language.oop5.basic.php

http://www.php.net/manual/en/language.variables.variable.php

+0

感謝Louis - 我改進了我的問題 - 我需要特別使用$ index,因爲它是'foreach'循環的一部分。對不起,我感到困惑 – Laurence

+1

啊,我看到了問題。您現在使用它的方式是嘗試訪問數組索引的元素「total_amount」,而不是數組$ list - > $ index的元素total_amount。 當然,由於$ index只是一個數組鍵,並且像這樣的一個字符串或整數,它將不起作用。 這是怎麼回事: '​​ {$ index} ['total_amount']?>' –

+0

yes - that works - thanks !!!!我會接受你的答案 - 但是你知道它是否可以通過改變我定義初始數組的方式使它像$ list - > $ index->​​ total_amount? – Laurence