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
4

1 に答える 1

1

ああ、問題がわかりました。

現在使用している方法では、配列 $list->$index の要素 total_amount ではなく、配列 index の要素 'total_amount' にアクセスしようとしています。そしてもちろん、 $index は配列キーにすぎず、文字列や整数であるため、機能しません。

これはどうですか:<td><?=$list->{$index}['total_amount']?></td>

最後の質問について ($list->$index->​​total_amount を介して値にアクセスする): おそらく (object) を使用して配列をオブジェクトにキャストできます。

$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

于 2012-09-07T11:38:04.923 に答える