访问多维数组

时间:2011-03-21 04:45:44

标签: php arrays

我在访问某些数组数据时遇到了一些问题,需要一些提示。

我正在进行数据库调用,返回类似于此的数据:

+------+------------+------------+-----------+
| id   | key        | part_num   |    value  |
+------+------------+------------+-----------+
|    1 | application| p1         |          1|
|    2 | application| p1         |          2|
|    3 | capsule    | p1         |          3|
|    3 | capsule    | p1         |          4|
|    4 | instrument | p1         |          5|
|    5 | instrument | p1         |          6|
|    5 | instrument | p1         |          7|
|    1 | application| n8         |          1|
|    2 | application| n8         |          2|
|    3 | capsule    | n8         |          3|
|    3 | capsule    | n8         |          4|
|    4 | instrument | n8         |          5|
+------+------------+------------+-----------+

注意part_num

我真的只需要part_num和value(我得到的),但我想用PHP编号将它分组。

例如,甚至像打印一样简单:

Part: (p1)
Values: 1, 2, 3, 4, 5, 6, 7.
Part: (n)
Values: 1, 2, 3, 4, 5.

请注意:我不能用mysql做这个,因为我将这些数据用于其他事情,我不想做多个数据库请求。

我希望我已经说清楚了,如果需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

假设您当前的数据位于变量$data中,您可以遍历行并创建一个新数组$partnums

$partnums = array();

foreach($data as $row) {
    if (!isset($partnums[$row['part_num']]))
        $partnums[$row['part_num']] = array();
    $partnums[$row['part_num']][] = $row['value'];
}

现在$partnums是一个数组,其中包含用于键的part_num ...每个引用与该part_num相关联的值数组。

打印出您建议的值:

foreach($partnums as $partnum => $values) {
    printf('Part: (%s)'.PHP_EOL, $partnum);
    printf('Values: %s.'.PHP_EOL, implode(', ', $values));
}

答案 1 :(得分:0)

您将使用循环遍历数据。像这样:

$results = [your query and fetch]

$array = array();
foreach ($results as $rs)
  $array[$rs['part_num']][] = $rs['value'];