WITH RECURSIVE `cte` AS (
SELECT `id`, `pid`, `name`, 0 AS `level`
FROM `table`
UNION SELECT `p`.`id`, `p`.`pid`, `p`,`name`, `cte`.`level` + 1 AS `level`
FROM `cte`
JOIN `table` AS `p` ON `p`.`id` = `cte`.`pid`
)
SELECT `id`, `name`, `level`
FROM `cte`
ORDER BY `level`
$arTab = ['call', 'fields'];
$arr = [
['id' => 'call', 'communication' => '123'],
['id' => 'fields', 'communication' => '111'],
['id' => 'garden', 'communication' => '4544'],
];
$result = array_values(array_filter(
$arr,
static fn(array $item): bool => !in_array($item['id'], $arTab),
));
var_export($result);
// array (
// 0 => array (
// 'id' => 'garden',
// 'communication' => '4544',
// ),
//)
a,b
- операция "запятая", её результат равен последнему операнду, то есть b.a>b
и a<b
. Поскольку в b строка, а операции дают true или false, то, соответственно, сравнения не проходят и отрабатывает ветка default. <?php
$x = 400;
$y = 0.75;
$z = 1.5;
$test = ($x + 2 * $y - ($x / 2 + 2 * $z)) / 2;
print $test;
// 99.25