/** * Получение всех ошибок по каждому полю, склееных в строку. * * Если контракт - сложный многомерный массив, то ошибки склеиваются из всех подмассивов для каждого старшего ключа. * На выходе всегда получается простой ассоциативный массив [поле => ошибки]. В случае сложного контракта полями * будут его старшие ключи. * * @param null $key ключ в массиве данных. Возможно составной ключ типа "['lvl1' => ['lvl2' => 'param1']]". * @param string $glue клей между соседними элементами одного массива * @param string $eol клей между соседними подмассивами * @return array */ public function getErrorsAsString($key = null, $glue = ' ', $eol = '') { $errors = $this->getErrors($key); foreach ($errors as &$v) { if (is_array($v)) { $v = Arrays::implode_recursive($v, $glue, $eol); } } return $errors; }
public function test_implode_recursive() { $arr = ['string 1', ['string 2', 'string 3'], ['sub' => ['string 4', 'string 5']]]; $expect = Arrays::implode_recursive($arr, ' + ', ' rn '); $this->assertEquals($expect, 'string 1 rn + string 2 + string 3 rn + rn + string 4 + string 5', 'Слияние многомерного массива в строку'); }