Как расположить название месяца в массиве? [дубликат] ⇐ Php
-
Anonymous
Как расположить название месяца в массиве? [дубликат]
Я построил этот массив на основе SQL-запроса и отправки массива:
$months = array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь' , 'Ноябрь декабрь'); $monthPicked=array();//месяцы добавлены к результату $rows = array_map(function($item) use(&$monthPicked){ array_push($monthPicked, $item->месяц); return (объект) ['c' => [ (объект) ['v' => $item->month, 'f' => null], (объект) ['v' => intval($item->jobcount), 'f' => null], (объект) ['v' => intval($item->interncount), 'f' => null] ]]; }, array_values($data)); $remainingMonths=array_diff($months, $monthPicked); foreach($remainingMonths как $месяц) { $rows[]=(объект) ['c' => [ (объект) ['v' => $month, 'f' => null], (объект) ['v' => 0, 'f' => ноль], (объект) ['v' => 0, 'f' => ноль] ]]; } Теперь мне нужно расположить месяцы последовательно с января по декабрь, поскольку название месяца с помощью функции array_push вставляется в конец предыдущего массива.
Можно ли расположить месяцы последовательно?
Это результат массива:
Массив ( [0] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Июль [f] => ) [1] => Объект stdClass ( [v] => 6 [f] => ) [2] => Объект stdClass ( [v] ] => 2 [f] => ) ) ) [1] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Август [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 3 [f] => ) ) ) [2] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Январь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v ] => 0 [f] => ) ) ) [3] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Февраль [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [4] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Март [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [5] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Апрель [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [6] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => May [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [7] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Jun [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [8] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Сентябрь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v ] => 0 [f] => ) ) ) [9] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => October [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [10] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Ноябрь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [11] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Декабрь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v ] => 0 [ж] => ) ) ) ) Я пробовал использовать эту функцию, но она не работает с несколькими массивами классов объектов.
usort($rows, "compare_months"); функция Compare_months($a, $b) { $monthA = date_parse($a['месяц']); $monthB = date_parse($b['месяц']); вернуть $monthA["месяц"] - $monthB["месяц"]; } Отображается Ошибка: неустранимая ошибка: невозможно использовать объект типа stdClass в качестве массива
Как заменить ['month'] в соответствии с форматом массива $rows?
Я построил этот массив на основе SQL-запроса и отправки массива:
$months = array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь' , 'Ноябрь декабрь'); $monthPicked=array();//месяцы добавлены к результату $rows = array_map(function($item) use(&$monthPicked){ array_push($monthPicked, $item->месяц); return (объект) ['c' => [ (объект) ['v' => $item->month, 'f' => null], (объект) ['v' => intval($item->jobcount), 'f' => null], (объект) ['v' => intval($item->interncount), 'f' => null] ]]; }, array_values($data)); $remainingMonths=array_diff($months, $monthPicked); foreach($remainingMonths как $месяц) { $rows[]=(объект) ['c' => [ (объект) ['v' => $month, 'f' => null], (объект) ['v' => 0, 'f' => ноль], (объект) ['v' => 0, 'f' => ноль] ]]; } Теперь мне нужно расположить месяцы последовательно с января по декабрь, поскольку название месяца с помощью функции array_push вставляется в конец предыдущего массива.
Можно ли расположить месяцы последовательно?
Это результат массива:
Массив ( [0] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Июль [f] => ) [1] => Объект stdClass ( [v] => 6 [f] => ) [2] => Объект stdClass ( [v] ] => 2 [f] => ) ) ) [1] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Август [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 3 [f] => ) ) ) [2] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Январь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v ] => 0 [f] => ) ) ) [3] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Февраль [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [4] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Март [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [5] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Апрель [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [6] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => May [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [7] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Jun [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [8] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Сентябрь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v ] => 0 [f] => ) ) ) [9] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => October [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [10] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Ноябрь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v] ] => 0 [f] => ) ) ) [11] => Объект stdClass ( [c] => Массив ( [0] => Объект stdClass ( [v] => Декабрь [f] => ) [1] => Объект stdClass ( [v] => 0 [f] => ) [2] => Объект stdClass ( [v ] => 0 [ж] => ) ) ) ) Я пробовал использовать эту функцию, но она не работает с несколькими массивами классов объектов.
usort($rows, "compare_months"); функция Compare_months($a, $b) { $monthA = date_parse($a['месяц']); $monthB = date_parse($b['месяц']); вернуть $monthA["месяц"] - $monthB["месяц"]; } Отображается Ошибка: неустранимая ошибка: невозможно использовать объект типа stdClass в качестве массива
Как заменить ['month'] в соответствии с форматом массива $rows?