Php 遍历对象数组
我使用以下代码创建了一个对象数组:Php 遍历对象数组,php,arrays,object,Php,Arrays,Object,我使用以下代码创建了一个对象数组: $data = (object)array(); 并用数据填充它。当我完成时,结果应该是这样的: Data-> accounts-> 54-> today-> sales checkout_fees trans_fees payable week-> sales
$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");
}
我知道它有继承权,就像多维数组一样,但每个项都是一个对象。我需要能够获取一个对象的名称,并使用$data->accounts-$variable->week->sales使用该名称和引用数据
我还将研究如何将一个对象转换为一个数组来处理它,我只是在寻找最好的解决方案
更新: ($counter=1;$counter<9999;$counter++)的
{
if(isset($data->{$counter})){
echo“账号”。$counter。“有数据。
\n”;
}
}
实际上,上面的循环为我提供了所有需要的“帐户”。我可以将它们放入一个数组中,用于迭代我的对象并完成我需要的计算,尽管这是一种非常低效的获取列表的方法,但我发现除了直接引用对象的名称之外,没有其他方法引用对象的名称,不幸的是,我的列表是动态创建的。。没有办法提前告诉你
有人知道更好的方法来获取对象第二级的帐户ID列表吗
谢谢
银虎
更新: 最后,我只是查询我的数据库,查看哪些帐户在“销售”端和“应付”端都处于活动状态,它返回了与创建对象时相同的帐户列表(45、54、55、56)。我现在根据需要使用这个结果来处理数据
谢谢。您的
$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对象转换为数组感兴趣。我想请您参考以下内容:
您有一个合成对象,因此您需要迭代合成的每个级别,以显示合成中的字符串(如果这是您试图实现的,我并不完全清楚您的问题的目的): 在PHP中:
foreach($data->accounts as $account)
foreach($account as $period)
foreach($period as $fee)
echo $fee, "\n";
如果我没有看错您的评论,您需要访问编号的属性,您可以将它们放在花括号中:
$data->accounts->{54}->week->sales - $data->accounts->{55}->week->transaction_fees
正如您在评论中所写的,您在查找所有数量的帐户时遇到了问题,这些帐户只是
$data->accounts
的对象变量。您可以使用以下函数获取此类列表:
$numbers = get_object_vars($data->accounts);
我希望这有助于您继续深入学习。这里提供了类的基本语法-没有“对象数组”这样的东西。你有一个目标,句号。对象的所有属性也是吗?
var\u dump
为您提供了什么?var\u dump
您的对象。然后你就会明白为什么它说“类stdClass的对象”不能被转换。我的目标是获得一个编号帐户ID的列表(即54、55、56),使用每个值作为$account迭代该组值,所以我可以这样做:$weeknetsales=($data->accounts->$account->week->sales->$data->accounts->accounts->week->transaction\u fees)啊..不幸的是,我不知道“数字”将是什么,因为这是用PHP填充的。我试图做一个foreach,这样它会自动抓取它们并使用它们,直到没有更多..所以我的替代方法是获取它们的列表,并使用该列表做一些事情。@Silvertiger:我添加了另一个代码示例我应该给你那个列表。谢谢,我休假了一段时间,但我会看看我是否能实现那个更改,因为它可能会节省数据库查询和时间。谢谢。
foreach($data->accounts as $account)
foreach($account as $period)
foreach($period as $fee)
echo $fee, "\n";
$data->accounts->{54}->week->sales - $data->accounts->{55}->week->transaction_fees
$numbers = get_object_vars($data->accounts);