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,11 +175,10 @@ class ParserController extends BaseController
175 } else { 175 } else {
176 throw new \ErrorException('Ошибка кеша'); 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 $writer = new PriceWriter(); 184 $writer = new PriceWriter();
common/components/parsers/CustomConverter.php
@@ -15,14 +15,18 @@ class CustomConverter extends Converter { @@ -15,14 +15,18 @@ class CustomConverter extends Converter {
15 { 15 {
16 // очистка служебного префикса в массиве заголовков 16 // очистка служебного префикса в массиве заголовков
17 if ($key_prefix) { 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 $key_array = array_filter($key_array, function ($value){ return $value !==''; }); 25 $key_array = array_filter($key_array, function ($value){ return $value !==''; });
21 } 26 }
22 27
23 -  
24 array_walk( $value_arr, 28 array_walk( $value_arr,
25 - function ( &$value, $key, $key_array) { 29 + function ( &$value, $key, $key_array ) {
26 $res = $value; 30 $res = $value;
27 foreach ($res as $sub_key => $sub_value) { 31 foreach ($res as $sub_key => $sub_value) {
28 if (isset($key_array[$sub_key])) { 32 if (isset($key_array[$sub_key])) {