Преобразовать массив

#1 8 марта 2021 в 23:00
Привет всем. Подскажите как мне сделать из этого
  1.  
  2.  
  3. [09] => Array
  4. (
  5. [0] => 1654
  6. [1] => 1764
  7. )
  8.  
  9. [10] => Array
  10. (
  11. [0] => 1625
  12. [1] => 1732
  13. )
  14.  
  15.  
Вот такое
  1.  
  2. [09, 1654, 1764]
  3. [10, 1625, 1732]
  4.  
Спасибо.
#2 8 марта 2021 в 23:29
  1. $result = [];
  2.  
  3. foreach ($array as $key => $values) {
  4.  
  5. $item = [$key];
  6.  
  7. foreach ($values as $value) {
  8. $item[] = $value;
  9. }
  10.  
  11. $result[] = $item;
  12. }
  13.  
  14. print_r($result);
#3 8 марта 2021 в 23:43
А можно еще костылями. Зато кода меньше))
  1. foreach ($array as $key => $values) {
  2. $result[] = explode(',', $key.','.implode(',', $values));
  3. }
Ни на что не претендую, я не программист))
#4 8 марта 2021 в 23:44
Fuze,
Спасибо, а как это преобразовать в строку?
Пытаюсь вывести Гугл чарт…
Там блин как-то ну совсем не дружно с MySQL
  1.  
  2.  
  3. data.addRows([
  4. [1, 1200, 80.8],
  5. [2, 30.9, 69.5],
  6. [3, 25.4, 57],
  7. [4, 11.7, 18.8],
  8. [5, 11.9, 17.6],
  9. [6, 8.8, 13.6],
  10. [7, 7.6, 12.3],
  11. [8, 12.3, 29.2],
  12. [9, 16.9, 42.9],
  13. [10, 12.8, 30.9],
  14. [11, 5.3, 7.9],
  15. [12, 6.6, 8.4],
  16. [13, 4.8, 6.3],
  17. [14, 4.2, 6.2],
  18. [16, 0.2, 3.5]
  19. ]);
  20.  
  21.  
#5 8 марта 2021 в 23:46

как это преобразовать в строку?

Рачей
О, тогда мой вариант точно короче получается)) И сразу с квадратными скобками:
  1. foreach ($array as $key => $values) {
  2. $result[] = '['.$key.','.implode(',', $values).']';
  3. }
  1. Array
  2. (
  3. [0] => [9,1654,1764]
  4. [1] => [10,1625,1732]
  5. )
#6 8 марта 2021 в 23:53
Нифигаccе о-го-гошеньки, спасибо! Это уже ближе к телу… теперь как-то от print_r избавиться. Как это в строку перевести?
#7 8 марта 2021 в 23:58

теперь как-то от print_r избавиться

Рачей
Так я для примера print_r дал, чтобы вы видели, что выведет.

Спасибо, а как это преобразовать в строку?

Рачей
Вероятно речь про Javascript.

  1. data.addRows(<?php echo json_encode($result); ?>);

А можно еще костылями. Зато кода меньше

Нифигаccе о-го-гошеньки
И правда костыли) Не стоит стремиться к минимуму кода в ущерб читаемости.
#8 8 марта 2021 в 23:58

Как это в строку перевести?

Рачей
В смысле? То, что получилось?))

  1. foreach ($array as $key => $values) {
  2. $result[] = '['.$key.','.implode(',', $values).']';
  3. }
  4. $addrows = 'data.addRows(['.implode(',', $result).']);'; // $addrows используйте, где надо
Результат:
  1. data.addRows([[9,1654,1764],[10,1625,1732]]);
Не зная разных технологий я бы сделал так))
#9 9 марта 2021 в 00:03

Не зная разных технологий я бы сделал так))

Нифигаccе о-го-гошеньки
В данном случае рабочий код — правильный код) Тут как "вера" позволяет)
#10 9 марта 2021 в 00:03

Не стоит стремиться к минимуму кода в ущерб читаемости

Fuze
Не, дело не в читаемости или минимуме. Дело в том, что до некоторых вещей далековато еще. А тут блин мы еще с Вами перебиваем друг друга. Я ж не думал, что Вы онлайн. Так бы насоветовал человеку по простому, он и был бы доволен. И всё бы работало. А так вот надо вникать, что это за такое космическое))
#11 9 марта 2021 в 00:05
Нифигаccе о-го-гошеньки, Fuze, спасибо, все вышло.
Это яваскрипт. Попробовал Гугл чарт… не чарт а черт какой-то… 😊))
#12 9 марта 2021 в 00:07

А тут блин мы еще с Вами перебиваем друг друга

Нифигаccе о-го-гошеньки
Когда решений больше одного это ж хорошо, пусть выбирает теперь smile
#13 9 марта 2021 в 00:11
Извините, надо было кусок этого чарта сюда запулить. На всякий случаях что бы те кто посмотрят понимали о чем речь.

developers.google.com/chart/interactive/docs/gallery/linechart#creating-material-line-charts

  1.  
  2.  
  3. google.charts.load('current', {'packages':['line']});
  4. google.charts.setOnLoadCallback(drawChart);
  5.  
  6. function drawChart() {
  7.  
  8. var data = new google.visualization.DataTable();
  9. data.addColumn('number', 'Day');
  10. data.addColumn('number', 'Guardians of the Galaxy');
  11. data.addColumn('number', 'The Avengers');
  12. data.addColumn('number', 'Transformers: Age of Extinction');
  13.  
  14. data.addRows([
  15. [1, 37.8, 80.8, 41.8],
  16. [2, 30.9, 69.5, 32.4],
  17. [3, 25.4, 57, 25.7],
  18. [4, 11.7, 18.8, 10.5],
  19. [5, 11.9, 17.6, 10.4],
  20. [6, 8.8, 13.6, 7.7],
  21. [7, 7.6, 12.3, 9.6],
  22. [8, 12.3, 29.2, 10.6],
  23. [9, 16.9, 42.9, 14.8],
  24. [10, 12.8, 30.9, 11.6],
  25. [11, 5.3, 7.9, 4.7],
  26. [12, 6.6, 8.4, 5.2],
  27. [13, 4.8, 6.3, 3.6],
  28. [14, 4.2, 6.2, 3.4]
  29. ]);
  30.  
  31. var options = {
  32. chart: {
  33. title: 'Box Office Earnings in First Two Weeks of Opening',
  34. subtitle: 'in millions of dollars (USD)'
  35. },
  36. width: 900,
  37. height: 500
  38. };
  39.  
  40. var chart = new google.charts.Line(document.getElementById('linechart_material'));
  41.  
  42. chart.draw(data, google.charts.Line.convertOptions(options));
  43. }
  44.  
  45.  
Попробовал его водрузить к делу.
Для дальнейшего понимания. Я компонент написал который каждый час пишет в базу остатки товара в магазинах вкусвилл.
И решил попробовать график
У меня из базы берутся товары группируются по часу и получается что эти два товара из MySQL выходят сначала один каждый час выдаёт количество, потом второй…
изначально вывод из базы, кстати задействованы только стандартные запросы инстанта, выглядит вообще никак совсем не рвядом. Если интересно могу показать и структуру базы и запрос…
#14 14 марта 2021 в 07:18

Попробовал Гугл чарт… не чарт а черт какой-то..

На одном проекте я использовал habr.com/ru/post/79950/ эти графики. Вроде попроще, хотя суть одна. Тут главное сделать правильный запрос в базу, что бы изначально получить правильный(удобный для переноса в js) массив.
#15 14 марта 2021 в 07:22
Сейчас хорошо не помню, но там ещё нюанс с этой частью
  1. data.addRows([
  2. [1, 37.8, 80.8, 41.8]...
Вроде бы это не массив, хоть и выглядит как массив.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.