Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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_Mysql_Mysqli - Fatal编程技术网

Php 在结果中合并行

Php 在结果中合并行,php,mysql,mysqli,Php,Mysql,Mysqli,我有这个数据表: +-ID-+-sensorID-+----date---+-value-+ | 1 | 1 |'some date'| 20 | | 2 | 1 |'some date'| 15 | | 3 | 1 |'some date'| 18 | | 4 | 2 |'some date'| 40 | | 5 | 2 |'some date'| 68 | | 6 | 2

我有这个数据表:

+-ID-+-sensorID-+----date---+-value-+
| 1  | 1        |'some date'|  20   |
| 2  | 1        |'some date'|  15   |
| 3  | 1        |'some date'|  18   |
| 4  | 2        |'some date'|  40   |
| 5  | 2        |'some date'|  68   |
| 6  | 2        |'some date'|  55   |
现在,我想在php中创建如下数组:

date - value sensorID(1) - value sensorID(2)
我还需要在日期只有一个传感器值时显示:

[date] => 01-01-2014 [value] => 50 [value] => 60
[date] => 02-01-2014 [value] => 20 [value] => 30
[date] => 03-01-2014 [value] => null [value] => 55
[date] => 04-01-2014 [value] => 20 [value] => 33

我如何通过一些简单的步骤有效地做到这一点?否则,我将只为ID 1和ID 2创建一个结果,或者在整个数组上运行我的函数两次。

只需在一次运行中获取所有数据,然后用PHP构建数组:

// do the mysql query stuff >> $result (array of all rows in db)
$data = array();
foreach ($result AS $row) {
  if (!isset($data[$row['date']])) {
    $data[$row['date']] = array('sensor1' => null, 'sensor2' => null);
  }
  $data[$row['date']]['sensor' . $row['sensorID']] = $row['value'];
}
结果大概是

$data = array(
  '01-01-2014' => array('sensor1' => 50, 'sensor2' => 60),
  '02-01-2014' => array('sensor1' => 20, 'sensor2' => 30),
  '03-01-2014' => array('sensor1' => null, 'sensor2' => 55),
  '04-01-2014' => array('sensor1' => 20, 'sensor2' => 33)
);

我假设您使用
ID
作为
sensor ID
如果是这样,那么在查询中使用
Join
,将
Join
这个表与它本身一起并将结果保存在array@NaveedYousaf“ID”是数据本身的主键。“sensorID”是my DB中传感器的链接ID。这样我就可以自己加入一个表了?另外,如果“sensorID”在特定日期缺少值,我需要类似于“null”的值。只需
选择*
并用php填充数组:
foreach$row,$result[$row['date'][$row['sensorID']=$row['value']
只需使用
左外连接
右外连接
在您的查询中,您将
连接
基于
ID==sensorID
它将带来整个数据,如果您没有
ID==6
的数据,它将插入默认对象。我可能很累,但我无法循环此数组并获取这两个参数值以及与这些值关联的日期。日期是数组的键,但是如果我'foreach($d数据)',我就不能得到键($d)。我可以直接输出值。没关系,我只是累了:),非常感谢。这很有魅力。