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