From: fabien Date: Sat, 7 Nov 2009 19:11:44 +0000 (+0000) Subject: made small optimizations to for loops X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=1bb24438b5ea590afabac1fcaeef3f74802b9771;p=konrad%2Ftwig.git made small optimizations to for loops git-svn-id: http://svn.twig-project.org/trunk@116 93ef8e89-cb99-4229-a87c-7fa0fa45744b --- diff --git a/lib/Twig/runtime_for.php b/lib/Twig/runtime_for.php index 5ab9475..c587873 100644 --- a/lib/Twig/runtime_for.php +++ b/lib/Twig/runtime_for.php @@ -78,27 +78,29 @@ function twig_iterate(&$context, $seq) function twig_set_loop_context(&$context, $iterator, $target) { + $idx = $iterator->idx; + if (is_array($target)) { - foreach (array_combine($target, $iterator->seq[$iterator->idx]) as $key => $value) + foreach ($target as $key => $value) { - $context[$key] = $value; + $context[$value] = $iterator->seq[$idx][$key]; } } else { - $context[$target] = $iterator->seq[$iterator->idx]; + $context[$target] = $iterator->seq[$idx]; } $context['loop'] = array( 'parent' => $iterator->parent, 'length' => $iterator->length, - 'index0' => $iterator->idx, - 'index' => $iterator->idx + 1, - 'revindex0' => $iterator->length - $iterator->idx - 1, - 'revindex' => $iterator->length - $iterator->idx, - 'first' => $iterator->idx == 0, - 'last' => $iterator->idx + 1 == $iterator->length, + 'index0' => $idx, + 'index' => $idx + 1, + 'revindex0' => $iterator->length - $idx - 1, + 'revindex' => $iterator->length - $idx, + 'first' => $idx == 0, + 'last' => $idx + 1 == $iterator->length, ); }