Commit e9b63b6a6730aed4f0023ba7333a1ff8fbb50ac7

Authored by Mihail
1 parent ae83e13e

fixed error in ConvertToAssocArray method for manual parsing

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])) {
... ...