Prevent iteration over associative arrays.

This commit is contained in:
Justin Hileman
2010-04-26 21:40:02 -04:00
parent a66e494e6e
commit 668b538669
+12 -1
View File
@@ -142,7 +142,7 @@ class Mustache {
// regular section // regular section
case '#': case '#':
if (is_array($val)) { if ($this->varIsIterable($val)) {
foreach ($val as $local_context) { foreach ($val as $local_context) {
$replace .= $this->_render($content, $this->getContext($context, $local_context)); $replace .= $this->_render($content, $this->getContext($context, $local_context));
} }
@@ -387,6 +387,17 @@ class Mustache {
} }
} }
/**
* Check whether the given $var should be iterated (i.e. in a section context).
*
* @access protected
* @param mixed $var
* @return bool
*/
protected function varIsIterable($var) {
return is_object($var) || (is_array($var) && !array_diff_key($var, array_keys(array_keys($var))));
}
/** /**
* Prepare a string to be used in a regular expression. * Prepare a string to be used in a regular expression.
* *