Commit 14ab0a80c6eaee06ce10c8330201f0a3bd444619
1 parent
d5c6d7e0
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])) { |