Как правильно разделить данные из электронной почты в массив - PullRequest
0 голосов
/ 14 ноября 2018

Предисловие: Моя общая цель - создать круговую диаграмму с данными ниже.На круговой диаграмме были бы срезы, изображенные как 1-8, с соответствующими процентами на основе числового значения справа от двоеточия.

У меня есть следующие данные, которые автоматически отправляются в электронном письме:

1:64.00
2:63.07
3:62.78
4:61.87
5:47.47
6:43.97
7:36.99
8:19.85
Sent from: [email redacted]
Parameters:3000,0
Time Server:2018.11.05 08:21:53
Time Local: 2018.11.04 22:21:53

В письме всегда так много строк.

То, что я пытаюсь сделать, это склеить строки для данных 1-8, что я успешно сделал с этой частью кода:

if (strpos($row['subject'], 'Currency Relative Strength') !== false) {
                            $a1 = preg_split('/\r\n|\r|\n/', $row['body']);                                                
                            $a = array("label" => $b[0], "p1" => $a1[1], "p2" => $a1[2], "p3" => $a1[3], "p4" => $a1[4], "p5" => $a1[5], "p6" => $a1[6], "p7" => $a1[7]);
                            $array[] = $a;
                        }

Это выглядит так: [{ "р0": "1: 64.00", "p1": "2: 63,07", "p2": "3: 62,78", "р3": "4: 61,87", "р4": "5: 47,47", "p5": "6: 43.97", "p6": "7: 36.99", "p7": "8: 19.85"}]

Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсьследуйте документации здесь: https://canvasjs.com/docs/charts/integration/jquery/chart-types/jquery-pie-chart/

Для которой для части точек данных требуется массив, который полностью отличается от того, который мне удалось собрать.Это либо оставляет мне необходимость полностью реструктурировать массив, либо использовать другую систему круговых диаграмм, что я не против, если у кого-то есть какие-либо предложения.Я также понимаю, что если я решу пойти по маршруту canvasjs, чтобы получить автоматически обновляемую круговую диаграмму с данными, которые обновляются каждую минуту, я должен реализовать нечто более похожее на это:

CanvasJS: Созданиединамическая диаграмма с data.php, json encode и ajax (измерители пропускной способности)

Всем, кто желает либо помочь с текущим кодом, чтобы лучше соответствовать холсту js, ИЛИ предложить совершенно другую систему круговой диаграммы, котораяможет лучше работать с массивом, который мне удалось собрать, я очень ценю тебя!Кстати, я не женат на идее JQuery круговой диаграммы, я просто подумал, что это может быть лучший путь ...

1 Ответ

0 голосов
/ 14 ноября 2018

Учитывая, что

$message = '
...
';

и формат для построения круговой диаграммы JQuery

dataPoints: [ 
                { label: "Samsung",  y: 30.3, legendText: "Samsung"}, 
                ...
            ] 

Точки данных могут быть извлечены следующим образом.

$lines = explode("\n", trim($message));
$firstEightLines = array_slice($lines, 0, 8);

$dataPoints = array_map(function($line) {
    list($index, $point) = explode(":", $line);
    return [
        'label' => "p{$index}",
        'legendText' =>  "p{$index}",
        'y' =>(float)$point,
    ];
}, $firstEightLines);

var_dump($dataPoints);
/*
array(8) {
  [0]=>
  array(3) {
    ["label"]=>
    string(2) "p1"
    ["legendText"]=>
    string(2) "p1"
    ["y"]=>
    float(64)
  }
  ...*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...