PHP 5 для начинающих

Печать

Другая полезная функция необходима для преобразования N-мерных массивов в одномерные:

public static function arrayNth ($a, $n) {

$out = array(); foreach ($a as $item) {

$out[$item[$n]]=$item[$n];

}

return $out;

}

Так как данные внутри приложения желательно представлять в виде массивов, следующая функция является особенно полезной. Она принимает запрос и помещает его результат в массив:

public static function queryToMultidimArray ($db, $sql) {

$out = array();

$query = LogUtils::executeQuery ($db, $sql);

if ( !$query ) {

throw new MultiLogDatabaseQueryException ($sql); }

while ($row = LogUtils::getQueryArray($query)) { array_push ($out, $row);

}

return $out;

}

В файл для удобства включены две функции. Первая из них возвращает массив всех имеющихся в базе данных сайтов, а вторая возвращает все уникальные разделы (или demo_ids):

public static function gatherSites ($db) {

return LogUtils::queryToMultidimArray(

$db, "select distinct site_id from user_log order by site_id");

}

public static function gatherSections ($db) {

return LogUtils::queryToMultidimArray(

$db, "select distinct demo_id from user_log order by demo_id");

}

Одной из главных функций, которыми необходимо обеспечить этот класс, является функция, открывающая SQLite-базы данных. Приведенный ниже код предназначен именно для этого. (Функция возвращает одно из нестандартных исключений Multi-logOpenDatabaseException() , если во время доступа к базе данных возникла какая-либо проблема):

public static function openDatabase () {

$db = sqlite_popen($GLOBALS['dbpath'].$GLOBALS['dbname'], 0666, $err); if ( !$db ) {

throw new MultiLogOpenDatabaseException ();

}

return $db;

}