made small optimizations to for loops
authorfabien <fabien@93ef8e89-cb99-4229-a87c-7fa0fa45744b>
Sat, 7 Nov 2009 19:11:44 +0000 (19:11 +0000)
committerfabien <fabien@93ef8e89-cb99-4229-a87c-7fa0fa45744b>
Sat, 7 Nov 2009 19:11:44 +0000 (19:11 +0000)
git-svn-id: http://svn.twig-project.org/trunk@116 93ef8e89-cb99-4229-a87c-7fa0fa45744b

lib/Twig/runtime_for.php

index 5ab9475..c587873 100644 (file)
@@ -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,
   );
 }