Commit e9b63b6a6730aed4f0023ba7333a1ff8fbb50ac7
1 parent
ae83e13e
fixed error in ConvertToAssocArray method for manual parsing
Showing
2 changed files
with
8 additions
and
5 deletions
Show diff stats
backend/controllers/ParserController.php
... | ... | @@ -175,11 +175,10 @@ class ParserController extends BaseController |
175 | 175 | } else { |
176 | 176 | throw new \ErrorException('Ошибка кеша'); |
177 | 177 | } |
178 | - CustomVarDamp::dumpAndDie($data); | |
179 | 178 | |
180 | 179 | // соотнесем отпарсенные данные с соответсивем полученным от пользователя |
181 | 180 | // для этого преобразуем массив отпарсенных данных - назначим ключи согласно соответствию |
182 | - $data = \Yii::$app->multiparser->convertToAssocArray($data, $arr, 'attr_'); | |
181 | + $data = \Yii::$app->multiparser->convertToAssocArray($data, $arr , 'attr_'); | |
183 | 182 | |
184 | 183 | // запустим специальный класс который запишет данные в таблицы связанные с прайсами |
185 | 184 | $writer = new PriceWriter(); | ... | ... |
common/components/parsers/CustomConverter.php
... | ... | @@ -15,14 +15,18 @@ class CustomConverter extends Converter { |
15 | 15 | { |
16 | 16 | // очистка служебного префикса в массиве заголовков |
17 | 17 | if ($key_prefix) { |
18 | - array_walk( $key_array, function ( &$value, $key, $key_prefix ){ return str_replace( $key_prefix, '',$value ); }, $key_prefix ); | |
18 | + // @todo оптимизировать - два переворота массива - избыточно | |
19 | + $key_array = array_flip( $key_array ); | |
20 | + | |
21 | + array_walk( $key_array, function ( &$value, $key, $key_prefix ){ $value = str_replace( $key_prefix, '',$value ); }, $key_prefix ); | |
22 | + | |
23 | + $key_array = array_flip( $key_array ); | |
19 | 24 | //уберем пустые элементы |
20 | 25 | $key_array = array_filter($key_array, function ($value){ return $value !==''; }); |
21 | 26 | } |
22 | 27 | |
23 | - | |
24 | 28 | array_walk( $value_arr, |
25 | - function ( &$value, $key, $key_array) { | |
29 | + function ( &$value, $key, $key_array ) { | |
26 | 30 | $res = $value; |
27 | 31 | foreach ($res as $sub_key => $sub_value) { |
28 | 32 | if (isset($key_array[$sub_key])) { | ... | ... |