Двухуровневое дерево MySQL + PHP

Немного хотелось бы описать процесс хранения двухуровневого дерева в MySQL, а так же его выгрузку одним запросом и формирование PHP массива для отображения в шаблоне и т.д.

Начну с структуры таблицы MySQL, на примере таблицы для хранения тегов Категория -> Тег.

Структура таблицы
CREATE TABLE table_tag (
  tag_id int(11) NOT NULL AUTO_INCREMENT COMMENT 'ИД тега',
  tag_name varchar(50) NOT NULL COMMENT 'ИМЯ тега',
  tag_type enum ('part', 'tag') NOT NULL DEFAULT 'tag' COMMENT 'ТИП тега',
  tag_parent int(10) UNSIGNED DEFAULT NULL COMMENT 'ИД родителя',
  PRIMARY KEY (tag_id),
  INDEX IDX_tag_parent (tag_parent),
  INDEX IDX_tag_type (tag_type)
)
ENGINE = MYISAM
COMMENT = 'Таблицы тегов';

Заполнение данными
Естественно, что заполнение данными для каждого конкретного случая будет если не уникально, то как минимум, отличаться. В данном случае, я буду использовать часть данных тегов уже существующего проекта.

Читать дальше

Преобразование многомерного массива PHP в простой XML

Преобразование многомерного массива PHP в простой XML (без атрибутов), только пары ключ=>значение

Очень коротко и быстро, хочу представить Вашему вниманию, небольшой класс PHP для преобразования многомерных массивов PHP в простой (без атрибутов) XML.

Большое спасибо автору Кевину Ватерсону за сие творение, которое мы успешно используем в своём API.


Читать дальше

Рекурсивный поиск значения в массиве PHP

Рекурсивный поиск значения в массиве задача редкая, но иногда нужная.

Чуть нижу я выкладываю функцию, которая реализовывает задачу рекурсивного поиска значения в многомерных массивах.

Пусть она не сильно эстетична, зато «надёжна и практична ©».

function in_array_recursive($search, $array, $strict = false) {
	$result = false;
	if (in_array($search, $array)) {
		return true;
	}//if
	foreach ($array as $value) {
		if (is_array($value)) {
			$result = in_array_recursive($search, $value);
			if ($result) {
				return TRUE;
			}//if
		} else {
			return ($strict) ? ($search === $value) : ($search == $value);
		}//if
	}//foreach
	return $result;
}

Удалить первый элемент массива в php

PHP

Как удалить первый элемент массива в PHP?

Чтоб удалить первый элемент массива можно использовать команду
array_shift ( array &$array ).
array_shift() извлекает первое значение массива array и возвращает его, сокращая размер array на один элемент. Все числовые ключи будут изменены таким образом, что нумерация массива начнётся с нуля, в то время как строковые ключи останутся прежними.

Код очень простой. Пример:
$array = array(1,2,3,4,5,6);
array_shift($array);
// в результате получим массив array(2,3,4,5,6)