Прошу прощения, если на это был дан ответ. Искал решение и ничего не нашел. Но я пытаюсь перебрать симплекс-файл, полученный из вызова API. API не самый лучший, поэтому, когда дата пересекает полночь, он полностью сокращает эти заказы. Поэтому, чтобы обойти это, мне нужно получить заказы и на следующий день, а затем выполнить foreach по заказам, затем я выполняю if на дату, чтобы получить целевую дату. В каждом цикле я хочу, чтобы он брал объекты simplexml и помещал их в переменную и добавлял каждый новый, чтобы к концу у меня был новый объект только с правильными датами.
Я попытался удалить определенные узлы, но это кажется гораздо более запутанным, чем просто их комбинирование в конце каждой итерации.
if (strtotime($thisFri) >= strtotime($today)) {
$params = array(
"shiftStart" => $thisFri . " 00:00:00",
"shiftEnd" => $thisSat . "12:00:00",
"status" => "filled"
);
$clearConnect->setParameters($params);
$clearConnect->setResultType('xml');
$shiftResult = $clearConnect->sendRequest('getOrders'); //gets orders
$friShifts = simplexml_load_string($shiftResult); //puts the results in to xml
foreach ($friShifts->order as $shift) { //iterates through each order
$startLong = new DateTime($shift->shiftStartTime); //figuring out dates
$start = $startLong->format('Y-m-d');
$endLong = new DateTime($shift->shiftEndTime);
$end = $endLong->format('Y-m-d');
if ($start == $thisFri) { //if to run through all orders with proper start date
Вот где я нахожусь. $ friShifts - это симплекс-файл, содержащий набор заказов, которые выглядят следующим образом. После этого происходит еще кое-что, но это в основном то, что я ищу. Я хочу, чтобы каждая итерация нужной даты помещалась в новый симплекс-файл, который затем запускался через другие мои функции.
SimpleXMLElement Object
(
[orderId] => 3988445
[status] => filled
[shiftStartTime] => 2019-01-11T07:00:00
[shiftEndTime] => 2019-01-11T15:30:00
[tempId] => 57921
[firstName] => SimpleXMLElement Object
(
)
[lastName] => SimpleXMLElement Object
(
)
[clientId] => 1543
[clientName] => SimpleXMLElement Object
(
)
[regionName] => SimpleXMLElement Object
(
)
[orderSpecialty] => School
[orderCertification] => SLP
[floor] => SimpleXMLElement Object
(
)
[shiftNumber] => 1
[note] => SimpleXMLElement Object
(
)
[payrollNumber] => SimpleXMLElement Object
(
)
[lessLunchMin] => SimpleXMLElement Object
(
)
[dateTimeCreated] => 2018-08-06T17:03:34
[takenBy] => 480
[bookedByUserId] => 480
[orderTypeId] => 1
[orderType] => SimpleXMLElement Object
(
)
[city] => Media
[state] => xx
[zipCode] => xxxxx
[orderSourceID] => SimpleXMLElement Object
(
)
[orderSourceName] => SimpleXMLElement Object
(
)
[lt_orderID] => 0
[dateTimeModified] => 2018-08-06T17:03:34
[subjectID] => SimpleXMLElement Object
(
)
[subject] => SimpleXMLElement Object
(
)
)```
Извините, я изменил вопрос, я действительно хочу, чтобы это был новый объект simplexml в конце со всеми объединенными итерациями $ shift.
вы пробовали преобразовать конечный объект в массив / stdclass?
Думаю, моя главная проблема в том, что я не могу понять, как их объединить. В основном нужно иметь $ friDataClean. = $ Shift или что-то в этом роде после каждой итерации.
Можете ли вы опубликовать XML-вывод оба текущего и следующего дня из $ shiftResult?
Они оба одинаковые. Достигнув следующего дня до 12, я просто получаю любые приказы текущего дня, которые переходят в полночь. Итак, в итоге я получил большой список этих объектов, но некоторые из них, например, относятся к 11.01.2019, а некоторые - к 01.01.2019. Поэтому я превращаю эти даты начала в объекты dateTime и сравниваю их с днем, который я ищу. Но для ответа на вопрос вот один от 12.01.2019
([orderId] => 4178126 [status] => заполнено [shiftStartTime] => 2019-01-12T06: 00: 00 [shiftEndTime] => 2019-01-12T10: 00: 00 [tempId] => 1693958 [firstName] => Объект SimpleXMLElement (
Пришлось разрезать, но по сути то же самое






Вы хотите превратить его обратно в строку XML? Почему бы просто не работать с ним как с объектами?