I'am пытается разобраться в этом массиве с объектами, которые берут свое начало из по запросу Календаря Batch Google с этим в результате массива с объектами:Сортировка массива объектов по дате в объекте
array(3) {
["response-test0"]=>;
object(Google_Service_Calendar_Events)#46 (17) {
.
.
.
["items"]=>;
array(1) {
[0]=>;
array(20) {
.
.
["start"]=>;
array(1) {
["dateTime"]=>;
string(25) "2017-02-01T10:00:00+01:00"
}
.
.
.
["response-test1"]=>;
object(Google_Service_Calendar_Events)#46 (17) {
.
.
.
["items"]=>;
array(1) {
[0]=>;
array(20) {
.
.
["start"]=>;
array(1) {
["dateTime"]=>;
string(25) "2017-02-01T11:00:00+01:00"
}
.
.
.
["response-test3"]=>;
object(Google_Service_Calendar_Events)#46 (17) {
.
.
.
["items"]=>;
array(1) {
[0]=>;
array(20) {
.
.
["start"]=>;
array(1) {
["dateTime"]=>;
string(25) "2017-02-01T11:00:00+01:00"
}
.
.
Это код для извлечения данные:
$arrlength = count($calendarId);
for ($x = 0; $x <= $arrlength-1; $x++) {
$results = $service->events->listEvents($calendarId[$x], $optParams);
$batch->add($results, "test" .$x);
};
$results = $batch->execute();
Полученный массив содержит тебя (в данном случае) объекты, названные [ "ответ-test0"], [ "ответ-test1"] и [ "ответ-test2"], как показано в моем массив.
Редактировать: факт, что объекты массива свернуты с помощью ассоциативного массива, кажется, отсутствуют в ответах, насколько я понимаю (или я ошибаюсь)? Предложения по поиску внутри объекта, похоже, находятся в в правильном направлении, но я не смог полностью проверить это, потому что «верхний уровень» ['response_x'] не учитывается.
Структуры сортировать старт-дату в (не индивидуально сортировочных датах в каждом объекте):
array(3) {
["response-test0"]
Object(Google_Service_Calendar_Events)#46(17){
.
.
}
["response-test1"]
Object(Google_Service_Calendar_Events)#46(17){
.
.
}
["response-test2"]
Object(Google_Service_Calendar_Events)#46(17){
.
.
}
Я попытался с помощью этого фрагмента (и многих других) для сортировки отдельных элементов по дате ([» start "]) - начало календарного собрания, но пока не повезло. Я также рассмотрел слияние объектов, но не повезло. Я новичок в PHP, но знаю основы О.Г. программирования достаточно, так что я надеюсь, что кто-то может мне точку в правильном направлении - и я был бы признателен:
usort($results, function($a, $b) {
return $a['items']['start'] - $b['items']['start'];
});
var_dump($results);
Пожалуйста, попробуйте 'StrToTime ($ A [ 'элементы'] [ 'начать']) - StrToTime ($ B [» items '] [' start ']) 'или лучше создать объект DateTime, а затем добавить свои значения в' usort' – pleinx
Поскольку мне не нужен уровень ["response-testx"] - есть способ слияния или сгладить массив - переместить все записи на один шаг вверх и избавиться от уровня ['response-testx']? – petrusjak
@petrusjak i обновил ответ, если вы хотите уменьшить размер массива. – Nitin