开发者

Large arrays of objects not referencable by keys

We send out emails to users with the latest jobs, so we have a array of about 1800 user objects.

I use a for loop to iterate through the objects

$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];
    }

}

The slice if is used to determain which part of the object array we use to send out (it开发者_StackOverflow's to heavy to send out in one chuck) - I release this could probably be done smarter - But the if passes so that isn't the issue at hand.

The issue is

 $jobagent = $jobagents[$x];

The first loop is fine, $jobagent is now a object - but after that it appears empty, and i've checked that i looped through everything by adding a echo to the loop - And i've tried print_r'ing the array, and it has 1800+ objects with keys from 0-18xx

Am i missing something with arrays of objects above a certain size and referencing them by keys? If i use a foreach the objects are fine.

Issue resolved, array was overwritten in edge case


If you really receive a list of objects (= it's a proper array), then for simplicity try:

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

However I suspect that's not your actual problem source. Objects that unset themselves are somewhat uncommon.


For sure, that you have really plain array

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜