Мне кажется, что вы будете генерировать ошибки во втором цикле:
foreach ($ValueA as $ValueB) {
Это включит field
в цикл и столкнется с проблемами при попытке доступа к нему в виде массива.
Кроме того, я думаю, что вы подразумеваете, что ваш третий цикл будет:
foreach ($params as $ValueC) {
В противном случае он сталкивается с теми же проблемами, что и средний цикл.
Я думаю, что если вы намерены продолжать использовать это как массив, а не преобразовывать его в класс, как предлагали другие, вы должны реструктурировать его так, чтобы все названные данные были на одном уровне. Обратите внимание, что это уменьшает сложность как массива (немного), так и циклов (много).
public $form = array (
array(
'field' => 'email',
'params' => array(
array(
'rule' => 'email',
'on' => 'create',
'required' => true,
),
array(
'rule' => 'email',
'on' => 'update',
'required' => false,
)
)
)
);
public function validate($form) {
foreach ($form as $field_params) {
$field = $field_params['field'];
foreach ($field_params['params'] as $param) {
$this->isValid($field, $param['rule'], $param['on'], $param['required']);
}
}
}