+---------------+-----------------+
| 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
)中的数据,以及如何只显示数组中的一条记录。
答案 0 :(得分:4)
尝试使用array_slice()
;
//this will create new array without first element
$new_group = array_slice($group, 1);
现在像以前一样迭代$new_group
。
答案 1 :(得分:2)
如果内存不是问题(数组不是很大),请使用array_slice
作为suggested by Peter Krejci。但是,如果 是一个问题,那么您将希望通过简单地跳过第一个元素来避免重复所有数据:
$first = true;
foreach ($group as $type=>$price) {
if ($first) {
$first = false;
continue;
}
echo "Type:", $type, " Price: ", $price;
}
我正在使用这种方法而不是直接数字索引,因为无法保证索引是无间隙的。也可以使用内部指针函数,例如next,但在 Iterator 接口的这个时代,这些函数已经失宠了。
还如何只显示数组中的一条记录
这取决于您希望通过哪种标准访问它。如果你想按类型进行,你可以简单地说:
echo $group['Music'];
答案 2 :(得分:1)
尝试array_shift($group)
,然后尝试foreach()
。
来自array_shift() documentation:
array_shift()关闭数组的第一个值并返回它, 将数组缩短一个元素并将所有内容向下移动。所有 数字数组键将被修改为从零开始计数 而文字键不会被触及。