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