我们向拥有最新职位的用户发送电子邮件,因此我们拥有大约1800个用户对象的数组。
我使用for循环遍历对象
$part = $this->getRequest()->getParam('part') ? : 1;
$parts = 2;
$jobagents = RAD::registry('jobagents');
$jobagentsLength = count($jobagents);
$sliceCount = $jobagentsLength / $parts;
for ($x = 0; $x < $jobagentsLength; $x++) {
$slice = $x + 1;
if ($slice > ceil($sliceCount * ($part - 1)) && $slice <= ceil($sliceCount * $part)) {
$jobagent = $jobagents[$x];
}
}
切片if用于阻止我们用来发送的对象数组的哪一部分(在一个chuck中发送很重) - 我发布这可能会更聪明 - 但if if pass that isn'问题就在眼前。
问题是
$jobagent = $jobagents[$x];
第一个循环很好,$ jobagent现在是一个对象 - 但之后它看起来是空的,我已经检查过我通过向循环添加一个回声来循环所有东西 - 我已经尝试了print_r'ing数组,它有1800多个对象,密钥为0-18xx
我是否遗漏了超过一定大小的对象数组并通过键引用它们?如果我使用foreach,对象就可以了。
问题已解决,数据被边缘情况覆盖
答案 0 :(得分:0)
当然,你有真正的数组
$jobagents = array_values(RAD::registry('jobagents'));
答案 1 :(得分:0)
如果您确实收到了一个对象列表(=它是一个正确的数组),那么为了简单起见,请尝试:
$jobagents = array_slice($jobagents, $i * $sliceCount, $sliceCount);
foreach ($jobagents as $j) {
但我怀疑这不是你真正的问题来源。不设置自己的对象有点不常见。