<?php
// это наш массив из базы, но для примера задаю данные в пхп массиве
$data = array(
array('id' => 1, 'pid' => 0, 'name' => '1'),
array('id' => 2, 'pid' => 1, 'name' => '1.1'),
array('id' => 3, 'pid' => 2, 'name' => '1.1.1'),
array('id' => 4, 'pid' => 0, 'name' => '2'),
array('id' => 5, 'pid' => 0, 'name' => '3'),
array('id' => 6, 'pid' => 5, 'name' => '3.1'),
array('id' => 7, 'pid' => 5, 'name' => '3.2'),
);
//теперь создаем массив в виде дерева
$tree = array();
foreach ($data as $row) {
$tree[(int) $row['pid']][] = $row;
}
//ну и рекурсивная функция для вывода дерева
function treePrint($tree, $pid=0) {
if (empty($tree[$pid]))
return;
echo '<ul>';
foreach ($tree[$pid] as $k => $row) {
echo '<li>';
echo $row['name'];
if (isset($tree[$row['id']]))
treePrint($tree, $row['id']);
echo '</li>';
}
echo '</ul>';
}
//вызов функции
treePrint($tree);
<?php
$q = $db->prepare("SELECT * FROM request_journal WHERE addres = ? AND kv = ? ORDER BY date DESC");
$q->execute([$this->house, $this->flat]);
$data = $q->fetchAll();
print_r($data);
<?php
$string = '34956bbb22644e8ab7112755254fb44d';
function split1($string)
{
$components = [
substr($string, 0, 8),
substr($string, 8, 4),
substr($string, 12, 4),
substr($string, 16, 4),
substr($string, 20)
];
return implode('-', $components);
}
function split2($string)
{
return substr($string, 0, 8) . '-' .
substr($string, 8, 4) . '-' .
substr($string, 12, 4) . '-' .
substr($string, 16, 4) . '-' .
substr($string, 20);
}
function benchmark($max, $func, $string)
{
$timer = [
'start' => microtime(true),
'stop' => false
];
$i = 0;
do {
$i++;
$func($string);
} while ($i < $max);
$timer['stop'] = microtime(true);
printf("benchmark %s %s seconds\n", $func, $timer['stop'] - $timer['start']);
}
benchmark(10e6, 'split1', $string);
benchmark(10e6, 'split2', $string);
cat images.example.ru.error.log | grep '^Fatal error' | wc -l
<?php
$dataset = [
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15],
[94, 95],
[0, 1, 94, 95],
];
function arrange($array)
{
$groups = [];
$group = null;
foreach ($array as $index => $current) {
if ($group === null) {
$group = [
'start' => $current,
'end' => $current
];
continue;
}
$group['end'] = $current;
$next = $index + 1;
if (array_key_exists($next, $array)) {
if ($array[$next] - $current !== 1) {
array_push($groups, $group);
$group = null;
}
}
}
if ($group !== null) {
array_push($groups, $group);
}
return $groups;
}
foreach ($dataset as $array) {
$arrange = arrange($array);
print_r($arrange);
}