PHP:嵌套for循环以生成数组
今天我做了我的第一个“for loop”。我正在使用Microsoft Graph API PHP,希望与与会者一起响应日历事件。一切都在运行,但是每个Ajax调用都明显变慢了。我是采取了最快的方法,还是效率很低 谢谢大家! 该调用生成以下事件数组PHP:嵌套for循环以生成数组,php,ajax,loops,for-loop,Php,Ajax,Loops,For Loop,今天我做了我的第一个“for loop”。我正在使用Microsoft Graph API PHP,希望与与会者一起响应日历事件。一切都在运行,但是每个Ajax调用都明显变慢了。我是采取了最快的方法,还是效率很低 谢谢大家! 该调用生成以下事件数组 attendees: [{type: "required", status: {response: "none", time: "0001-01-01T00:00:00Z"},…},…] 0: {type: "require
attendees: [{type: "required", status: {response: "none", time: "0001-01-01T00:00:00Z"},…},…]
0: {type: "required", status: {response: "none", time: "0001-01-01T00:00:00Z"},…}
emailAddress: {name: "Name", address: "Address"}
address: "Address"
name: "Name"
status: {response: "none", time: "0001-01-01T00:00:00Z"}
type: "required"
1: {type: "required", status: {response: "none", time: "0001-01-01T00:00:00Z"},…}
2: {type: "required", status: {response: "declined", time: "0001-01-01T00:00:00Z"},…}
description: "description"
end: "2020-10-02T11:00:00+02:00"
organizer: "Organizer"
start: "2020-10-02T09:00:00+02:00"
title: "Title"
我的PHP如下所示:
$n=计数($events);
对于($i=0;$i$events[$i]->getId(),
'title'=>$events[$i]->getSubject(),
'end'=>Carbon::parse($events[$i]->getEnd()->getDateTime())->timezone('Europe/Amsterdam')->toIso8601String(),
'start'=>Carbon::parse($events[$i]->getStart()->getDateTime())->timezone('Europe/Amsterdam')->toIso8601String(),
'description'=>$events[$i]->getBody()->setContentType('text')->getContent(),
“organizer'=>$events[$i]->getOrganizer()->getEmailAddress()->getName(),
“与会者”=>array(),
]);
}
如果(isset($events[$i])){
$z=count($events[$i]->getAttendeers());
对于($j=0;$j GetAttendes()[$j]['emailAddress']['name'])){
$eventArray[$i]['Attendes'][=($events[$i]>GetAttendes()[$j]['emailAddress']['name']);
}否则{
$i++;
}
}
}否则{
$i++;
}
}
echo wp_json_encode(['events'=>$eventArray]);
此PHP代码看起来不正确。这是否有效?此处显示的内容是否与您的相符?for循环语句看起来不正确,与会者后面的结束方括号没有开始方括号。看起来,$i$events[$i]
之间缺少代码。此外,获取事件的查询是否使用分页?每个呼叫返回多少条记录?我没有发现PHP代码会立即显著降低速度,因此我的第一个猜测是确保数据库查询得到优化。你完全正确。会吃掉一些代码。我试图让整个代码可见。编辑:现在它完全可见了。完整地说:当前代码确实显示了请求的内容:)是的,查询绑定到$Startdate&$Enddate。在这种情况下,一个月。每个房间每月返回20到30个活动。每个事件都是一个由7个项目/值组成的数组。我看不出为什么它会在20-30条记录时慢下来。为什么两个独立的isset($events[$i])
语句而不是一个?关于速度的一个猜测是查看调用GetAttendes()时发生了什么。也许只调用一次并将其设置为一个变量以获得计数和循环可能会避免该方法中发生的某些处理。我还没有使用Microsoft Graph API,但您可以再次检查速率限制。20-30条记录并不多,但可能您太频繁地使用API了?这段PHP代码看起来不太正确。这是否有效?此处显示的内容是否与您的相符?for循环语句看起来不正确,与会者后面的结束方括号没有开始方括号。看起来,$i$events[$i]
之间缺少代码。此外,获取事件的查询是否使用分页?每个呼叫返回多少条记录?我没有发现PHP代码会立即显著降低速度,因此我的第一个猜测是确保数据库查询得到优化。你完全正确。会吃掉一些代码。我试图让整个代码可见。编辑:现在它完全可见了。完整地说:当前代码确实显示了请求的内容:)是的,查询绑定到$Startdate&$Enddate。在这种情况下,一个月。每个房间每月返回20到30个活动。每个事件都是一个由7个项目/值组成的数组。我看不出为什么它会在20-30条记录时慢下来。为什么两个独立的isset($events[$i])
语句而不是一个?关于速度的一个猜测是查看调用GetAttendes()时发生了什么。也许只调用一次并将其设置为一个变量以获得计数和循环可能会避免该方法中发生的某些处理。我还没有使用Microsoft Graph API,但您可以再次检查速率限制。20-30条记录并不多,但也许你太频繁地使用API了?
$n = count($events);
for ($i = 0; $i <= $n;) {
if (isset($events[$i])) {
$eventArray[$i] = ([
'uid' => $events[$i] - > getId(),
'title' => $events[$i] - > getSubject(),
'end' => Carbon::parse($events[$i] - > getEnd() - > getDateTime()) - > timezone('Europe/Amsterdam') - > toIso8601String(),
'start' => Carbon::parse($events[$i] - > getStart() - > getDateTime()) - > timezone('Europe/Amsterdam') - > toIso8601String(),
'description' => $events[$i] - > getBody() - > setContentType('text') - > getContent(),
'organizer' => $events[$i] - > getOrganizer() - > getEmailAddress() - > getName(),
'attendees' => array(),
]);
}
if (isset($events[$i])) {
$z = count($events[$i] - > getAttendees());
for ($j = 0; $j <= $z; $j++) {
if (isset($events[$i] - > getAttendees()[$j]['emailAddress']['name'])) {
$eventArray[$i]['attendees'][] = ($events[$i] - > getAttendees()[$j]['emailAddress']['name']);
} else {
$i++;
}
}
} else {
$i++;
}
}
echo wp_json_encode(['events' => $eventArray]);