/** * Переменовывание элементов массива * * @param array $data массив с данными * @param string $prefix префикс ключей * @param string $suffix суффикс ключей * @param string $addPS разделитель суффиксов, префиксов и ключей массива * @param string $sep разделитель ключей при склейке многомерных массивов * @return array массив с переименованными ключами */ function rename_key_array($data, $prefix = '', $suffix = '', $addPS = '.', $sep = '.') { $out = array(); if (is_array($data)) { if (!is_scalar($addPS)) { $addPS = ''; } $InsertPrefix = is_scalar($prefix) && $prefix !== '' ? $prefix . $addPS : ''; $InsertSuffix = is_scalar($suffix) && $suffix !== '' ? $addPS . $suffix : ''; foreach ($data as $key => $item) { $key = $InsertPrefix . $key; $val = null; switch (true) { case is_scalar($item): $val = $item; break; case is_array($item): $val = is_scalar($sep) && $sep !== '' ? rename_key_array($item, $key . $sep, $InsertSuffix, '', $sep) : array(); $out = array_merge($out, $val); $val = ''; break; } $out[$key . $InsertSuffix] = $val; } } return $out; }
public function testEmptyParametersSuccess() { $out = array('key' => 'val', 'subkey' => ''); $this->assertEquals($out, rename_key_array($this->data, '', '', '', '')); }