Don't thank me until it works.
public function process($value,array $params = array()) {
$options = array();
foreach($params as $key => $val) {
if (!empty($val)) {
$options[$key] = $val;
}
}
$mainOptions = array_merge(array('id' => $value), $options);
$properties = $this->tv->properties;
$properties = $properties === null? array() : $properties;
return $this->modx->runSnippet('fmzForms', array_merge($mainOptions, $this->tv->_properties));
}
}

This is the problem code:Sorry bob - just coming back to this _ i'm trying your third option to see if it works, but I cannot find the line of code which contains:
public function process($value,array $params = array()) { $options = array(); foreach($params as $key => $val) { if (!empty($val)) { $options[$key] = $val; } } $mainOptions = array_merge(array('id' => $value), $options); return $this->modx->runSnippet('fmzForms', array_merge($mainOptions, $this->tv->_properties)); } }
Replacing the return line with this could possibly fix it, but see better fixes below:
return $this->modx->runSnippet('fmzForms', (array) array_merge($mainOptions, $this->tv->_properties));
Probably a better fix would be to change the function to this:
public function process($value,array $params = array()) { $options = array(); foreach($params as $key => $val) { if (!empty($val)) { $options[$key] = $val; } } $mainOptions = array_merge(array('id' => $value), $options); $properties = $this->tv->properties; $properties = $properties === null? array() : $properties; return $this->modx->runSnippet('fmzForms', array_merge($mainOptions, $this->tv->_properties)); } }
Another fix (the best if it works) would be to use the original code and change:
$this->tv->_properties
to
$this->tv->getProperties()
[Update] Did some quick testing, and I think the final solution above would solve things. If there are no properties, $tv->_properties is null, but $tv->getProperties() returns an empty array, which should satisfy runSnippet().
BTW, I think this may not be a PHP 7 problem, but rather a change in the error level settings when you switched. The code is a problem for any version of PHP with the current version of MODX, but a different error level may have hidden that.
$this->tv->_properties
$this->tv->getProperties()
). It's this FormZ processor class:Sorry, I never clarified that (and I had to go find it again myself). It's this FormZ processor class:
core/components/formz/processors/mgr/tv/output/formz.class.php