Php按值拆分多维数组



晚安,我需要一些帮助与我的PHP代码。我有一个大数组,包含从一些机器读取的数据。机器ID为"idSensor"行。

我想把这个大的分成另一个数组由行idSensor分组。

我现在有什么

 Array
(
    [1010_0] => Array
        (
            [IdSensorData] => 1
            [Timestamp] => 2015-06-16 18:08:23.000
            [idSensor] => 1010
            [IdEnergyPrice] => 1
            [ReadData] => 1459
            [ReadEnergyPrice] => 0
        )
[1010_1] => Array
    (
        [IdSensorData] => 73
        [Timestamp] => 2015-06-16 18:09:22.000
        [idSensor] => 1010
        [IdEnergyPrice] => 1
        [ReadData] => 1477
        [ReadEnergyPrice] => 0
    )
[1011_0] => Array
    (
        [IdSensorData] => 2
        [Timestamp] => 2015-06-16 18:08:23.000
        [idSensor] => 1011
        [IdEnergyPrice] => 1
        [ReadData] => 1183
        [ReadEnergyPrice] => 0
    )
[1011_1] => Array
    (
        [IdSensorData] => 74
        [Timestamp] => 2015-06-16 18:09:23.000
        [idSensor] => 1011
        [IdEnergyPrice] => 1
        [ReadData] => 1307
        [ReadEnergyPrice] => 0
    )
)

我想要实现的

Array 1010
         [Timestamp] => 2015-06-16 18:08:23.000,[ReadData] => 1459
         [Timestamp] => 2015-06-16 18:09:22.000,[ReadData] => 1477
Array 1011
         [Timestamp] => 2015-06-16 18:08:23.000,[ReadData] => 1183
         [Timestamp] => 2015-06-16 18:09:23.000,[ReadData] => 1307

这是我的主函数csv.php

function getarray($ip,$readinterval)
{
        global $db; /*variavel global pois a funcao nao a consegue ir buscar diretamnte aos includes*/
        $sensores = array();/*Array para armazenar os sensores*/
        $resultado = array();/*Array para armazenar os resltados da pesquisa do csv*/
        /*Vamos buscar a base de dados os idSensor com o IP e intervalo de leitura que desejamos*/
        $sql = "SELECT idSensor FROM Sensor where IP = '{$ip}' and ReadInterval = '{$readinterval}'" or die("Erro na query");
        $result = $db->query($sql);
        if ($result->num_rows > 0)
        {
                echo "Temos resultados para o edificio: " .$ip." e tempo de leitura: ".$readinterval. " min</br></br>";
                while($row = $result->fetch_assoc())
                 {
                         $sensores[] = $row["idSensor"];
                 }
        } else {
                        echo "Nao encontrou resultados";
                }
        $db->close();
        /*Agora para cada sensor  do vetor sensores vamos buscar as suas informacoes ao CSV e armazenar tudo dentro do resultado*/
        foreach ($sensores as $value)
        {
                $csv = new parseCSV();
                $csv->conditions = "idSensor is '{$value}'";
                $csv->sort_by = 'idSensor';
                $csv->auto('eco.csv');
                $csv->parse('eco.csv');
                $resultado = array_merge($resultado,$csv->data);
        }
        /*Apresenta os resultados todos formatados*/
        print "<pre>";
        print_r($resultado);
        print "</pre>";

试试这个:

   $newArr = [ ];
       foreach($your_data as $key => $val) {
                     if($key == 'idSensor') {
                         $newArr[$key][ ] = ['Timestamp' => $val['Timestamp'], 'ReadData => $val['ReadData']
                      }
        }
        print_r($newArr);

我认为你可以在主循环中收集你的数据结构。

我没有测试过代码,所以我不确定。也许它会让你接近某个地方。

   foreach ($sensores as $value)
    {
            $csv = new parseCSV();
            $csv->conditions = "idSensor is '{$value}'";
            $csv->sort_by = 'idSensor';
            $csv->auto('eco.csv');
            $csv->parse('eco.csv');
            $resultArray[$csv->data['idSensor']][] = array ('Timestamp' => $csv->data['Timestamp'], 'ReadData' => $csv->data['ReadData']);
            $resultado = array_merge($resultado,$csv->data);
    }

再找了一会儿,我找到了我要找的东西。

按值拆分PHP数组

我对代码做了一些修改,我解决了问题。谢谢所有。

相关内容

  • 没有找到相关文章