$sub_value) { if (isset($key_array[$sub_key])) { // если такой ключ в базовом массиве (массиве ключей) есть, то заменим новым, иначе просто удалим $new_key = $key_array[$sub_key]; if (!array_key_exists($new_key, $res)) { $res[$new_key] = $value[$sub_key]; } } unset($res[$sub_key]); $value = $res; } }, $key_array); return $value_arr; } /** * @param $value_arr - двумерный массив к которому нужно добавить колонки * @param $add_array - массив с колонками (ключи) и значениями колонок * @return mixed */ public function addColumns(array $value_arr, array $add_array) { $i = 0; while ($i < count($value_arr)) { foreach ($add_array as $add_key => $add_value) { $value_arr[$i][$add_key] = $add_value; } $i++; } return $value_arr; } public static function convertToDetails(array $row) { // присвоим полный артикул $row['FULL_ARTICLE'] = $row['ARTICLE']; $details_model = new Details(); // проверим все ли обязательные колонки были указаны пользователем $details_model->load(['Details' => $row]); if (!$details_model->validate()) { $errors = ''; foreach ($details_model->errors as $key => $arr_errors) { $errors .= "Аттрибут $key - " . implode(' , ', $arr_errors); } throw new \ErrorException($errors); } return $row; } public function ConvertToMultiply(array $row) { $PRICE = $row['PRICE']; $sign = self::$sign; $multiplier = self::$multiplier; //CustomVarDamp::dumpAndDie(self); if (isset($sign)) { if ($sign == '+') { if ($multiplier > 0) { $PRICE += $multiplier; } } else if ($sign == '-') { if ($multiplier > 0) { $PRICE -= $multiplier; } } else if ($sign == '*') { if ($multiplier > 0) { $PRICE *= $multiplier; } } else if ($sign == '/') { if ($multiplier > 0) { $PRICE /= $multiplier; } } } $row['PRICE'] = $PRICE; return $row; } public static function convertToArticle( array $row ) { if ( isset($row['ARTICLE']) ) { // 1. Уберем префикс который разделен пробелом (если он есть) $words = explode(" ", $row['ARTICLE']); if (count($words) > 1) { array_shift($words); $row['ARTICLE'] = implode(" ", $words); } } if( isset( $row['BRAND'] ) && isset( self::$importer_id ) ){ // 2. Уберем брендовый префикс (если он есть) $prefix = ''; // запрос закешируем $prefix = ImportersPrefix::getDb()->cache( function ($db, $configuration, $row ) { return ImportersPrefix::find()->where([ 'importer_id' => self::$importer_id, 'brand' => $row['BRAND'] ])->one(); }); if ($prefix) { $row['BRAND'] = str_replace($prefix, "", $row['BRAND']); } } return $row; } public static function convertToBrand($value) { $res = $value; $res = trim(strtoupper($res)); $res = str_replace("Ä", "A", str_replace("Ö", "O", str_replace("Ü", "U", str_replace("Ë", "E", str_replace("Ò", "O", $res))))); $res = str_replace(array('@', '#', '~', '"', "'", "?", "!"), '', $res); return $res; } public static function convertToString($value) { $value = parent::convertToString($value); return str_replace(array('!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '~', '`', '"', "'", ' ', '№', '%', ';', ':', '[', ']', '{', '}', '*', '?', '/', '\'', '|', '.', ',', '<', '>', '\\'), '', $value); } }