从组数组中读取
+---------------+-----------------+
| Type | Price |
+---------------+-----------------+
| Music | 19.99 |
| Music | 3.99 |
| Music | 21.55 |
| Toy | 89.95 |
| Toy | 3.99 |
| Phones | 99.99 |
| Phones | 89.99 |
+---------------+-----------------+
我使用此代码将上述数据显示如下:
// Get the sum
$group = array();
foreach($rows as $r){
$group[$r->type] = $group[$r->Type] + $r->Price;
}
// Display
foreach($group as $type=>$price){
echo "Type:".$type." Price: ".$price;
}
结果:
Music | 45.53
Toy | 93.94
Phones | 189.98
我的问题是如何从第二条记录开始显示数组 ($group
) 中的数据,以及如何仅显示其中的一条记录数组。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试使用 array_slice() ;
现在像以前一样迭代
$new_group
。Try using
array_slice()
;And now iterate over
$new_group
as before.如果内存不是问题(数组不是很大),请使用
array_slice
作为 Peter Krejci 建议。但是,如果这是一个问题,您将希望通过简单地跳过第一个元素来避免重复所有数据:我使用此方法而不是直接数字索引,因为不能保证索引是无间隙的。人们也可以使用内部指针函数,例如 next 但那些在这个迭代器接口时代已经失宠了。
这取决于您希望通过哪些条件访问它。如果您想按类型执行此操作,您可以简单地:
If memory is not a concern (the array is not very large), use
array_slice
as suggested by Peter Krejci. However, if it is a concern, you'll want to avoid duplicating all that data by simply skipping the first element:I'm using this method rather than direct numerical index as there's no guarantee that the indexes are gapless. One could alternatively use the internal pointer functions, e.g., next but those have fallen out of favor in this age of the Iterator interface.
That depends which criteria you wish to access it by. If you want to do it by type, you can simply:
尝试
array_shift($group)
,然后尝试foreach()
。来自 array_shift() 文档:
Try
array_shift($group)
, and then theforeach()
.From the array_shift() documentation: