function do_foreach($array, $value, $key, Haanga_AST $body)
{
foreach (array('array', 'value', 'key') as $var) {
if (${$var} === NULL) {
continue;
}
$var1 =& ${$var};
if (is_string($var1)) {
$var1 = hvar($var1);
}
if (is_object($var1)) {
$var1 = $var1->getArray();
}
if (empty($var1['var'])) {
throw new Exception("Can't iterate, apparently {$var} isn't a variable");
}
$var1 = $var1['var'];
}
$def = array('op' => 'foreach', 'array' => $array, 'value' => $value);
if ($key) {
$def['key'] = $key;
}
$this->stack[] = $def;
$this->stack = array_merge($this->stack, $body->getArray(TRUE));
$this->stack[] = array('op' => 'end_foreach');
return $this;
}