我已经用以下代码创建了一个对象数组:
$data = (object)array();然后用数据填充它。当我完成的时候,结果应该是这样的:
Data-> accounts-> 54-> today-> sales
checkout_fees
trans_fees
payable
week-> sales
checkout_fees
trans_fees
payable
month-> sales
checkout_fees
trans_fees
payable
year-> sales
checkout_fees
trans_fees
payable
55-> today-> sales
checkout_fees
trans_fees
payable
week-> sales
checkout_fees
trans_fees
payable
month-> sales
checkout_fees
trans_fees
payable
year-> sales
checkout_fees
trans_fees
payable当我试图对树中的一个元素执行foreach时,它失败了:
foreach ($data->accounts as $account) {
echo ("Working to calculate account for account ".$account."<br>\n");
}我得到的错误是:
可捕获的致命错误:无法将类stdClass的对象转换为字符串
我认为这是因为我试图回显一个数组,而不是实际的“帐户”名称。是否有办法获取这个帐户名或它的子(即55),并将其设置为一个变量?我将需要相同的变量来迭代并对它下的数组中的数据执行计算,这样可以帮助实现两倍的效果。
谢谢,
银虎
更新:***************************
我的目标是:
object(stdClass)#11 (4) {
["56"]=> object(stdClass)#12 (3) {
["week"]=> object(stdClass)#13 (4) {
["sales"]=> float(6)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67) }
["month"]=> object(stdClass)#21 (4) {
["sales"]=> float(6)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67) }
["year"]=> object(stdClass)#27 (4) {
["sales"]=> float(6)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67) } }
["55"]=> object(stdClass)#15 (3) {
["week"]=> object(stdClass)#16 (4) {
["sales"]=> float(24)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67) }
["month"]=> object(stdClass)#23 (5) {
["sales"]=> float(24)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67)
["payable"]=> string(5) "14.00" }
["year"]=> object(stdClass)#29 (5) {
["sales"]=> float(24)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(2.68)
["payable"]=> string(5) "14.00" } }
["54"]=> object(stdClass)#18 (3) {
["week"]=> object(stdClass)#19 (4) {
["sales"]=> float(4)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67) }
["month"]=> object(stdClass)#25 (4) {
["sales"]=> float(4)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67) }
["year"]=> object(stdClass)#31 (4) {
["sales"]=> float(4)
["checkout_fees"]=> float(0)
["trans_fees"]=> float(0.67) } }
["45"]=> object(stdClass)#33 (3) {
["week"]=> object(stdClass)#34 (1) {
["payable"]=> string(5) "15.00" }
["month"]=> object(stdClass)#35 (1) {
["payable"]=> string(5) "15.00" }
["year"]=> object(stdClass)#36 (1) {
["payable"]=> string(5) "15.00"
}
}
}
} 我知道它有一个继承结构,就像多维数组一样,但是每个项目都是一个对象。我需要要么获取对象的名称并使用该名称,然后使用$ data ->accounts$variable->week->sales来引用数据。
我还将研究如何将一个对象转换为一个数组来处理它,我只是在寻找最好的解决方案。
更新:
for ($counter=1; $counter < 9999; $counter++) {
if (isset($data->{$counter})) {
echo "Account number ".$counter." has data.<br>\n";
}
}实际上,上面的循环给了我所有需要的“帐户”。我可以将它们插入数组中,用于通过对象进行迭代,并完成所需的计算,尽管这是一种非常低效的获取列表的方法,除了直接引用对象名称之外,我找不到其他方法来引用它。不幸的是,我的列表是动态创建的。没办法事先说出来。
有没有人知道更好的方法来获取对象的第二层的帐户ID列表?
谢谢,
银虎
更新:
最后,我只是查询我的数据库,看看哪些帐户在“销售”侧和“应付款”方都处于活动状态,并且它返回了创建对象时的相同列表(45、54、55、56)。我现在使用这个结果来处理所需的数据。
不过还是谢谢你。
发布于 2011-09-25 08:47:39
您的$account变量本身就是一个对象,例如:
54-> today-> sales
checkout_fees
trans_fees
payable
week-> sales
checkout_fees
trans_fees
payable
month-> sales
checkout_fees
trans_fees
payable
year-> sales
checkout_fees
trans_fees
payable这不能转换为字符串。
用这个代替:
foreach ($data->accounts as $account) {
echo ("Working to calculate account for account:");
var_dump($account);
}您也可能对将stdClass对象转换为数组感兴趣。我建议你注意这一点:
http://www.if-not-true-then-false.com/2009/php-tip-convert-stdclass-object-to-multidimensional-array-and-convert-multidimensional-array-to-stdclass-object/
https://stackoverflow.com/questions/7544501
复制相似问题