Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从组数组读取_Php_Arrays_Offset - Fatal编程技术网

Php 从组数组读取

Php 从组数组读取,php,arrays,offset,Php,Arrays,Offset,我使用此代码将上述数据显示如下: +---------------+-----------------+ | Type | Price | +---------------+-----------------+ | Music | 19.99 | | Music | 3.99 | | Music | 21.55 | | Toy |

我使用此代码将上述数据显示如下:

+---------------+-----------------+
| 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;
}

我的问题是如何从第二条记录开始显示数组(
$group
)中的数据,以及如何仅显示数组中的一条记录。

尝试使用
数组_切片()

现在像以前一样迭代
$new\u group

尝试
array\u shift($group)
,然后是
foreach()

从:

array_shift()将数组的第一个值移位并返回, 将阵列缩短一个元素,并向下移动所有元素。全部的 数字数组键将被修改为从零开始计数 而文字键不会被触摸


如果内存不是问题(数组不是很大),请使用
array\u slice
as。但是,如果这是一个问题,您将希望通过跳过第一个元素来避免重复所有数据:

//this will create new array without first element
$new_group = array_slice($group, 1);
我使用的是这种方法,而不是直接的数值索引,因为不能保证索引是无间隙的。也可以使用内部指针函数,例如,但在迭代器接口的这个时代,这些函数已经不受欢迎了

以及如何仅显示阵列中的一条记录

这取决于您希望通过哪些标准访问它。如果要按类型执行,您可以简单地执行以下操作:

$first = true;
foreach ($group as $type=>$price) {
    if ($first) {
        $first = false;
        continue;
    }
    echo "Type:", $type, " Price: ", $price;
}

回答得很好。我打算编辑它,将偏移量设置为0,长度设置为1,直到我意识到该方法返回提取的值。谢谢Peter,它工作起来很有魅力。非常感谢你的意见,伙计。我对这方面还不太熟悉,不知道如何实施你的方法。尽管如此,谢谢。我相信它将来会有所帮助,而且肯定会帮助其他人。
$first = true;
foreach ($group as $type=>$price) {
    if ($first) {
        $first = false;
        continue;
    }
    echo "Type:", $type, " Price: ", $price;
}
echo $group['Music'];