大型对象数组不能通过键引用

时间:2011-05-26 10:05:54

标签: php arrays

我们向拥有最新职位的用户发送电子邮件,因此我们拥有大约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,对象就可以了。

问题已解决,数据被边缘情况覆盖

2 个答案:

答案 0 :(得分:0)

当然,你有真正的数组

$jobagents = array_values(RAD::registry('jobagents'));

答案 1 :(得分:0)

如果您确实收到了一个对象列表(=它是一个正确的数组),那么为了简单起见,请尝试:

$jobagents = array_slice($jobagents, $i * $sliceCount, $sliceCount);
foreach ($jobagents as $j) {

但我怀疑这不是你真正的问题来源。不设置自己的对象有点不常见。