From 103c6910dae6d323c80d7ec6f3c657d6607529fb Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Wed, 3 Apr 2024 13:49:11 +0500 Subject: [PATCH 1/6] add uniqElements --- index.php | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/index.php b/index.php index bc93780..11b6e21 100644 --- a/index.php +++ b/index.php @@ -1,20 +1,22 @@ 30, * - 'name' => 'Jhon', * - 'age' => 23, * -] -* @param $id - ид искомого элемента * -* @return array - найденный элемент -*/ -function search($array, $id): ?array { - $rowId = array_search($id, array_column($array, 'id')); - return $array[$rowId]; -} + +/** + * Удалить дубликаты, оставив только уникальные значения + * @param array $array + * @return array + */ + +function uniqElements(array $array): array { + return array_unique($array, SORT_REGULAR); +} + +//Выходной массив: +/** Array ( + * [0] => Array([0] => laravel, [1] => php) + * [1] => Array([0] => codeigniter, [1] => php) + * [3] => Array([0] => c++, [1] => java)) + * ) +*/ ?> @@ -27,13 +29,13 @@ function search($array, $id): ?array { 10, 'name'=>'Jhon', 'age'=>23], - ['id'=>32, 'name'=>'Alex', 'age'=>34], - ['id'=>54, 'name'=>'Bob', 'age'=>45], - ['id'=>6, 'name'=>'Mike', 'age'=>61], + $arr = [ + ['laravel', 'php'], + ['codeigniter', 'php'], + ['laravel', 'php'], + ['c++', 'java'], ]; - print_r(search($array, 54)); + print_r(uniqElements($arr)); ?> \ No newline at end of file -- GitLab From 979bce5dd2ae2c6b1f032a6995dd5c46f57f3727 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Wed, 10 Apr 2024 17:37:32 +0500 Subject: [PATCH 2/6] fix --- index.php | 53 ------------------ src/Functions.php | 138 ---------------------------------------------- 2 files changed, 191 deletions(-) diff --git a/index.php b/index.php index f65dd68..612373c 100644 --- a/index.php +++ b/index.php @@ -46,58 +46,5 @@ $func = new Hp\Test\Functions(); ]; print_r($func->uniqElements($arr)); ?> - -

Function 4

- 'Смартфоны и гаджеты','depth' => 0,], - ['name' => 'Смартфоны, мобильные телефоны','depth' => 1,], - ['name' => 'Планшеты','depth' => 1,], - ['name' => 'Наушники и гарнитуры','depth' => 1,], - ['name' => 'Компьютеры и ноутбуки','depth' => 0,], - ['name' => 'Ноутбуки и аксессуары','depth' => 1,], - ['name' => 'Компьютеры и мониторы','depth' => 1,], - ['name' => 'Компьютерные комплектующие','depth' => 1,], - ['name' => 'Техника для дома','depth' => 0,], - ['name' => 'Техника для уборки','depth' => 1,], - ['name' => 'Товары для ухода за одеждой','depth' => 1,], - ['name' => 'Аксессуары для техники','depth' => 1,], - ['name' => 'Товары для дома и кухни','depth' => 0,], - ['name' => 'Посуда','depth' => 1,], - ]; - print_r($func->prepareMenu($aMenu)); - ?> - -

Function 5

- До НГ: "); - print($func->howDaysToNy(new DateTimeImmutable())); - ?> - -

Function 6

- Пятницы 13: "); - foreach($func->countFriday13(2024) as $date) { - print($date->format("Y-m-d l") . "\n"); - } - ?> - -

Function 7

- Разница дней: "); - print($func->diffDays(new DateTimeImmutable(), new DateTimeImmutable("2025-01-01"))); - ?> - -

Function 8

- readLogFile(__DIR__ . "/public/text.txt"); - ?> - -

Function 9

- readFileLineByLine(__DIR__ . "/public/text.txt") as $line) { - print($line); - } - ?> \ No newline at end of file diff --git a/src/Functions.php b/src/Functions.php index 3523f74..baa241b 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -56,143 +56,5 @@ class Functions { * [3] => Array([0] => c++, [1] => java)) * ) */ - - /** - * Сгруппировать подразедлы в верхние разделы меню - * Дочерние элементы поместить в массив родителя с ключом submenu * - * Значение под ключом depth определяет уровень раздела * - * Массив $aMenu всегда начинается с элемента depth = 0, - * все последующие элементы с depth = 1 являются его дочерними * - * элементами * * - * @param array $aMenu * * - * @return array - */ - - function prepareMenu(array $aMenu): array { - $result = []; - foreach ($aMenu as $arr) { - if ($arr['depth'] === 0) { - $result[] = array( - 'name' => $arr['name'], - 'depth' => $arr['depth'], - 'submenu' => [] - ); - continue; - } - $result[array_key_last($result)]['submenu'][] = array( - 'name' => $arr['name'], - 'depth' => $arr['depth'], - ); - } - return $result; - } - - /** Выходные данные: - * $aMenu = [ - * [ - * 'name' => 'Смартфоны и гаджеты', - * 'depth' => 0, - * 'submenu' => [ - * ['name' => 'Смартфоны, мобильные телефоны','depth' => 1,], - * ['name' => 'Планшеты','depth' => 1,], - * ['name' => 'Наушники и гарнитуры','depth' => 1,] - * ,] - * ,], - * [ - * 'name' => 'Компьютеры и ноутбуки', - * 'depth' => 0, - * 'submenu' => [ - * ['name' => 'Ноутбуки и аксессуары','depth' => 1,], - * ['name' => 'Компьютеры и мониторы','depth' => 1,], - * ['name' => 'Компьютерные комплектующие','depth' => 1,],]], - * [ - * 'name' => 'Техника для дома', - * 'depth' => 0, - * 'submenu' => [ - * ['name' => 'Техника для уборки','depth' => 1,], - * ['name' => 'Товары для ухода за одеждой','depth' => 1,], - * ['name' => 'Аксессуары для техники','depth' => 1,],]], - * [ - * 'name' => 'Товары для дома и кухни','depth' => 0, - * 'submenu' => [ - * ['name' => 'Посуда','depth' => 1,],]], ]; - */ - - /** - * Функция рассчитывает кол-во дней до нового года - * @param DateTime $date дата от которой, необходимо рассчитать кол-во дней - * @return int - */ - function howDaysToNy(DateTimeImmutable $date): int { - $endYear = date("Y-12-31", date_timestamp_get($date)); - $dateInterval = date_diff(new DateTimeImmutable($endYear), $date); - return $dateInterval->format("%a") + 1; - } - - /** - * Вернет все пятницы 13 в году - * @param int $yaer год, в котором необходимо произвести расчет - * @return DateTimeImmutable[] - */ - function countFriday13(int $year): iterable { - $stardDate = new DateTime("{$year}-01-01 Friday"); - $year += 1; - $endDate = new DateTime("{$year}-01-01"); - $interval = new DateInterval('P7D'); - foreach(new DatePeriod($stardDate, $interval, $endDate) as $day) { - yield new DateTimeImmutable($day->format("Y-m-d")); - } - } - - /** - * Вернет кол-во дней между датами - * @param DateTimeImmutable $dateStart дата начала - * @param DateTimeImmutable $dateEnd дата окончания - * @return int - */ - function diffDays(DateTimeImmutable $dateStart, DateTimeImmutable $dateEnd): int { - $dateInterval = date_diff($dateStart, $dateEnd); - return $dateInterval->format("%a") ; - } - - /** - * Переделай своё решение 8 задачи: - * замени вывод всего текста из файла разом на - * построчный вывод используя yield - * @param string $filePath путь до файла - * @return void - */ - function readLogFile(string $filePath): void { - if (file_exists($filePath)) { - $text = ""; - $file = fopen($filePath, "r"); - while(!feof($file)) { - $line = fgets($file); - $text .= $line; - } - fclose($file); - print($text); - } - else print("Такого файла не существует."); - } - - - /** - * Переделай своё решение 8 задачи: - * замени вывод всего текста из файла разом на - * построчный вывод используя yield - * @param string $filePath путь до файла - * @return void - */ - function readFileLineByLine(string $filePath): iterable { - if (file_exists($filePath)) { - $file = fopen($filePath, "r"); - while(!feof($file)) { - yield fgets($file); - } - fclose($file); - } - else yield "Такого файла не существует."; - } } -- GitLab From 100b449a16dd2890ee510c08f2023e533cc8a716 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Wed, 10 Apr 2024 17:39:31 +0500 Subject: [PATCH 3/6] fix2 --- index.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/index.php b/index.php index 612373c..2e8c174 100644 --- a/index.php +++ b/index.php @@ -16,11 +16,12 @@ $func = new Hp\Test\Functions();

Function 1

10, 'count'=>2], + ['price'=>5, 'count'=>5], + ['price'=>8, 'count'=>5], + ['price'=>12, 'count'=>4], + ['price'=>8, 'count'=>4], ]; print_r($func->sortPrice($array)); ?> -- GitLab From 60673fc8e894b003800226806000a66ad83efce3 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Thu, 11 Apr 2024 11:31:38 +0500 Subject: [PATCH 4/6] refactoring --- vendor/autoload.php | 25 - vendor/composer/ClassLoader.php | 579 ------------------------ vendor/composer/LICENSE | 21 - vendor/composer/autoload_classmap.php | 10 - vendor/composer/autoload_namespaces.php | 9 - vendor/composer/autoload_psr4.php | 10 - vendor/composer/autoload_real.php | 36 -- vendor/composer/autoload_static.php | 36 -- 8 files changed, 726 deletions(-) delete mode 100644 vendor/autoload.php delete mode 100644 vendor/composer/ClassLoader.php delete mode 100644 vendor/composer/LICENSE delete mode 100644 vendor/composer/autoload_classmap.php delete mode 100644 vendor/composer/autoload_namespaces.php delete mode 100644 vendor/composer/autoload_psr4.php delete mode 100644 vendor/composer/autoload_real.php delete mode 100644 vendor/composer/autoload_static.php diff --git a/vendor/autoload.php b/vendor/autoload.php deleted file mode 100644 index a3d2b61..0000000 --- a/vendor/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ - private $vendorDir; - - // PSR-4 - /** - * @var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var list - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> - */ - private $prefixesPsr0 = array(); - /** - * @var list - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var array - */ - private $missingClasses = array(); - - /** @var string|null */ - private $apcuPrefix; - - /** - * @var array - */ - private static $registeredLoaders = array(); - - /** - * @param string|null $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return array> - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return list - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return list - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return array Array of classname => path - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. - * - * @return array - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE deleted file mode 100644 index f27399a..0000000 --- a/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php deleted file mode 100644 index 0fb0a2c..0000000 --- a/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,10 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3..0000000 --- a/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($baseDir . '/src'), -); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php deleted file mode 100644 index f82ac6e..0000000 --- a/vendor/composer/autoload_real.php +++ /dev/null @@ -1,36 +0,0 @@ -register(true); - - return $loader; - } -} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php deleted file mode 100644 index 7a21546..0000000 --- a/vendor/composer/autoload_static.php +++ /dev/null @@ -1,36 +0,0 @@ - - array ( - 'Hp\\Test\\' => 8, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Hp\\Test\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit3bc055e7cfe85029886df43c57958e8c::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit3bc055e7cfe85029886df43c57958e8c::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit3bc055e7cfe85029886df43c57958e8c::$classMap; - - }, null, ClassLoader::class); - } -} -- GitLab From 434798373d2de09fb582ee4ec7f29cc6cdb8f0b9 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Thu, 11 Apr 2024 11:31:43 +0500 Subject: [PATCH 5/6] refactoring --- .gitignore | 1 + index.php | 14 ++++--- src/Functions.php | 93 +++++++++++++++++++++++++++-------------------- 3 files changed, 63 insertions(+), 45 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49ce3c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/vendor \ No newline at end of file diff --git a/index.php b/index.php index 2e8c174..dd3e02e 100644 --- a/index.php +++ b/index.php @@ -2,8 +2,9 @@ require_once __DIR__ . '/vendor/autoload.php'; -$func = new Hp\Test\Functions(); +use Hp\Test\Functions; +$func = new Functions(); ?> @@ -21,7 +22,7 @@ $func = new Hp\Test\Functions(); ['price'=>5, 'count'=>5], ['price'=>8, 'count'=>5], ['price'=>12, 'count'=>4], - ['price'=>8, 'count'=>4], + ['price'=>8, 'count'=>4], ]; print_r($func->sortPrice($array)); ?> @@ -29,21 +30,22 @@ $func = new Hp\Test\Functions();

Function 2

10, 'name'=>'Jhon', 'age'=>23], - ['id'=>32, 'name'=>'Alex', 'age'=>34], - ['id'=>54, 'name'=>'Bob', 'age'=>45], + ['id'=>10, 'name'=>'Jhon', 'age'=>23], + ['id'=>32, 'name'=>'Alex', 'age'=>34], + ['id'=>54, 'name'=>'Bob', 'age'=>45], ['id'=>6, 'name'=>'Mike', 'age'=>61], ]; print_r($func->search($array, 54)); ?> +

Function 3

uniqElements($arr)); ?> diff --git a/src/Functions.php b/src/Functions.php index baa241b..e9fece2 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -1,60 +1,75 @@ 12, 'count'=>4], ['price'=>10, 'count'=>2], ['price'=>8, 'count'=>4], ['price'=>8, 'count'=>5], ['price'=>5, 'count'=>5], ] + /** + * На выход должна вернуть отсортированный массив по ключу *price* DESC + * и во вторую очередь по *count* ASC: + * [['price'=>12, 'count'=>4], ['price'=>10, 'count'=>2], ['price'=>8, 'count'=>4], + * ['price'=>8, 'count'=>5], ['price'=>5, 'count'=>5],] + */ + /** + * Найдет элемент с указаным id + * @param array $array - массив, содержащий элементы со структурой + * [ + * 'id' => 30, + * 'name' => 'Jhon', + * 'age' => 23, + * ] + * @param $id - ид искомого элемента + * @return ?array - найденный элемент + */ - /* Найдет элемент с указаным id * - * @param array $array - массив, содержащий элементы со структурой * - [ - * 'id' => 30, * - 'name' => 'Jhon', * - 'age' => 23, * - ] - * @param $id - ид искомого элемента * - * @return array - найденный элемент - */ - function search($array, $id): ?array { - $rowId = array_search($id, array_column($array, 'id')); - return $array[$rowId]; + public function search(array $array, int $id): ?array + { + $rowId = array_search($id, array_column($array, 'id'), true); + if ($rowId) { + return $array[$rowId]; + } + return null; } - /** - * Удалить дубликаты, оставив только уникальные значения - * @param array $array - * @return array - */ + /** + * Удалить дубликаты, оставив только уникальные значения + * @param array $array + * @return array + */ - function uniqElements(array $array): array { + public function uniqElements(array $array): array { return array_unique($array, SORT_REGULAR); - } + } - //Выходной массив: - /** Array ( + /** + * Выходной массив: + * Array ( * [0] => Array([0] => laravel, [1] => php) * [1] => Array([0] => codeigniter, [1] => php) - * [3] => Array([0] => c++, [1] => java)) + * [3] => Array([0] => c++, [1] => java)) * ) - */ + */ } -- GitLab From f35eec85415e9a0f8c680ac57bab9da09fea5169 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Thu, 11 Apr 2024 11:41:46 +0500 Subject: [PATCH 6/6] refactoring --- public/text.txt | 2 -- src/Functions.php | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 public/text.txt diff --git a/public/text.txt b/public/text.txt deleted file mode 100644 index 58f1226..0000000 --- a/public/text.txt +++ /dev/null @@ -1,2 +0,0 @@ -Раз, два, три, четыре, -Пять, шесть, семь, восемь. \ No newline at end of file diff --git a/src/Functions.php b/src/Functions.php index e9fece2..38a5f9b 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -59,7 +59,8 @@ class Functions * @return array */ - public function uniqElements(array $array): array { + public function uniqElements(array $array): array + { return array_unique($array, SORT_REGULAR); } -- GitLab