rusphp

Алгоритм построения html таблицы для вложенных сущностей с объединением ячеек(colspan, rowspan)

Очень интересный вопрос -- надеюсь скоро решим для однократной вложености. Сходу в интернете найти не получается.

Основная идея -- разбить процесс на два шага

Процесс предлагается разбить на две части:

[!] rusphp Свободная библиотека функций на PHP (ООП) -- примеры кода

Скачать можно отсюда: https://github.com/it-for-free/rusphp

О библиотеке

Смысл данного набора классов -- создание новых слабосвязанных функций, которые теоретически можно повторно использовать (общего назначения).

Использование в проекте

Например (автозагрузка):

use ItForFree\rusphp\Test as Test;

Test::test();

Загружаем с помощью composer

Стабильная версия

В composer.json добавляем (эти секции могут у вас уже иметься), например:

php Получить все элементы массива, которые содержат строку (или одну из массива строк) -- пример функции

Из открытой библиотеки rusphp:

    /**
     * Получит все элементы массива, которые содержат  строку или несколько строк (подстроки)
     * 
     * @param string $arr     -- список строк, в которых искать
     * @param array $startStr -- список подстрок (которые искать)
     * @return array
     */
    public static function getElementsWith($arr, $startStrs, $trim = false)
    {
        $result = [];
        
        foreach ($arr as $val)
        {
            foreach ($startStrs as $startStr) {
                //log::pre($arr);

php Сортировка массива по указанному полю (по алфавиту) -- пример функции

Пример кода из общедоступной библиотеки rusphp (фрагмент кода -- библиотеку ищите на гихабе):

/**
 * Отсортирует массив (многомерный - массив массивов) по указанному полю
 * 
 * @param type $arr
 * @param type $keyName
 */
public static function sortByField(&$arr, $keyName) {
	
	self::$sortByFieldName = $keyName;
	usort($arr, "self::compareTwoFileds"); /** @see self::compareTwoFileds() */
}

/**
 *
 * @var string имя ключа поля, по которому производить сравнение подмасиивово (строк) массива
 */
private static  $sortByFieldName = ''; 

/**

php rusphp Сравнение строк по алфавиту php -- пример функции

    /**
     * Сравнит две строки относительно алфавита
     *  
     * @param string $str1
     * @param string $str2
     * @return int          1 если первая "больше", -1 если меньше, 0 если равны
     */
    function compareAsInAlphbet($str1, $str2)
    {
        return strnatcasecmp($str1, $str2);
    }

php Проверить начинается ли одна строка с другой -- является ли подстрока началом строки -- пример кода функции

По аналогии с проверкой содержания одной строки в другой:

/**
 * Проверит, что первая строка начинается со второй
 * 
 * @param string $str      основная строка
 * @param string $substr   та, которая может содержаться внутри основной
 */
function isStart($str, $substr)
{
	$result = strpos($str, $substr);
	if ($result === 0) { // если содержится, начиная с первого символа
	  return true;
	} else {
	  return false; 
	}
}

php rusphp Получить путь к файлу без расширения этого файла -- пример кода

    /**
     * Получить путь к файлу (или просто имя) в виде строки без расширения файла
     * 
     * @param string $pathStr -- сторка, в конце которой ожидается расширение
     * @return string
     */
    public static function getWithoutFileExtention($pathStr) 
    {
        $path_parts = \pathinfo($pathStr);
        $pathWithoutExt = $path_parts['dirname'] . DIRECTORY_SEPARATOR . $path_parts['filename'];
        
        return $pathWithoutExt;
    }

Subscribe to RSS - rusphp