From e9b63b6a6730aed4f0023ba7333a1ff8fbb50ac7 Mon Sep 17 00:00:00 2001 From: Mihail Date: Thu, 8 Oct 2015 09:36:49 +0400 Subject: [PATCH] fixed error in ConvertToAssocArray method for manual parsing --- backend/controllers/ParserController.php | 3 +-- common/components/parsers/CustomConverter.php | 10 +++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/backend/controllers/ParserController.php b/backend/controllers/ParserController.php index 916749e..afabb24 100644 --- a/backend/controllers/ParserController.php +++ b/backend/controllers/ParserController.php @@ -175,11 +175,10 @@ class ParserController extends BaseController } else { throw new \ErrorException('Ошибка кеша'); } - CustomVarDamp::dumpAndDie($data); // соотнесем отпарсенные данные с соответсивем полученным от пользователя // для этого преобразуем массив отпарсенных данных - назначим ключи согласно соответствию - $data = \Yii::$app->multiparser->convertToAssocArray($data, $arr, 'attr_'); + $data = \Yii::$app->multiparser->convertToAssocArray($data, $arr , 'attr_'); // запустим специальный класс который запишет данные в таблицы связанные с прайсами $writer = new PriceWriter(); diff --git a/common/components/parsers/CustomConverter.php b/common/components/parsers/CustomConverter.php index fa1e171..4b2a084 100644 --- a/common/components/parsers/CustomConverter.php +++ b/common/components/parsers/CustomConverter.php @@ -15,14 +15,18 @@ class CustomConverter extends Converter { { // очистка служебного префикса в массиве заголовков if ($key_prefix) { - array_walk( $key_array, function ( &$value, $key, $key_prefix ){ return str_replace( $key_prefix, '',$value ); }, $key_prefix ); + // @todo оптимизировать - два переворота массива - избыточно + $key_array = array_flip( $key_array ); + + array_walk( $key_array, function ( &$value, $key, $key_prefix ){ $value = str_replace( $key_prefix, '',$value ); }, $key_prefix ); + + $key_array = array_flip( $key_array ); //уберем пустые элементы $key_array = array_filter($key_array, function ($value){ return $value !==''; }); } - array_walk( $value_arr, - function ( &$value, $key, $key_array) { + function ( &$value, $key, $key_array ) { $res = $value; foreach ($res as $sub_key => $sub_value) { if (isset($key_array[$sub_key])) { -- libgit2 0.21.4