Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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_Multidimensional Array - Fatal编程技术网

Php按值拆分多维数组

Php按值拆分多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,晚安,我需要一些PHP代码方面的帮助。 我有一个大数组,它包含从一些机器读取的数据。 机器ID是行ID传感器 我想将这个大阵列拆分为另一个阵列,按行idSensor分组 我现在有什么 我想要达到的目标 这是我的主要函数csv.php function getarray($ip,$readinterval) { global $db; /*variavel global pois a funcao nao a consegue ir buscar diretamnte aos in

晚安,我需要一些PHP代码方面的帮助。 我有一个大数组,它包含从一些机器读取的数据。 机器ID是行ID传感器

我想将这个大阵列拆分为另一个阵列,按行idSensor分组

我现在有什么

我想要达到的目标

这是我的主要函数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);
试试这个:


你能提供源数组的JSON编码版本吗?foreach循环将是一个很好的开始。你能告诉我们你做了什么来获得如此混乱的数组表吗?谢谢你的帮助,我已经编辑了这个问题并添加了php函数。我正在使用csv库parsecsv.lib.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>";
   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);
    }
   $newArr = [ ];
       foreach($your_data as $key => $val) {
                     if($key == 'idSensor') {
                         $newArr[$key][ ] = ['Timestamp' => $val['Timestamp'], 'ReadData => $val['ReadData']
                      }
        }
        print_r($newArr);