$data = array_reduce(explode('/', $str), function($acc, $n) {
list($key, $values) = explode('-is-', $n);
$acc[$key] = explode('-or-', $values);
return $acc;
}, []);
$keys = array_keys($auto);
$header = implode("", array_map(function($n) {
return "<th>$n</th>";
}, $keys));
$rows = implode("", array_map(function($i) use($auto, $keys) {
return "<tr>".implode("", array_map(function($n) use($auto, $i) {
return "<td>".$auto[$n][$i]."</td>";
}, $keys))."</tr>";
}, range(0, count($auto[$keys[0]]) - 1)));
echo "<table>$header$rows</table>";
function getMonthAverage($data, $month) {
$monthData = array_filter(array_column($data, $month), function($n) {
return $n > 0;
});
$count = count($monthData);
return $count ? array_sum($monthData) / $count : 0;
}
$juneAverage = getMonthAverage($data, 'june');
$allAverage = array_reduce(array_keys($data[0]), function($acc, $n) use($data) {
$acc[$n] = getMonthAverage($data, $n);
return $acc;
}, []);
function checkNumbers($numbers) {
return $numbers === range($numbers[0], $numbers[count($numbers) - 1]);
}
$pow = ceil(count($array) / 2);
$arr = array_map(function($n) use($sum, &$pow) {
$pow -= 1;
return $sum * (1 + (1 - (2 ** -abs($pow))) * ($pow < 0 ? -1 : 1));
}, $array);
echo explode('-', (explode('/', $page)[3]))[2];
preg_match('~colors\-is\-(\w+)~', $page, $match);
echo $match[1];
$filtered = array_slice(array_filter($search_results, function($n) {
return условие;
}), 0, 5);
$filtered = [];
foreach ($search_results as $n) {
if (условие) {
$filtered[] = $n;
}
if (count($filtered) === 5) {
break;
}
}
id="link"
.this
; а вместо того, чтобы выдумывать какие-то стрёмные id для блоков которые надо показать, поднимайтесь при клике до общего предка блока и кликнутого элемента, и ищите блок через querySelector
:onclick="showTooltip(this)"
function showTooltip(link) {
const div = link.parentNode.querySelector('div');
if (div.style.display === 'none') {
div.style.display = 'block';
link.style.display = 'none';
} else {
div.style.display = 'none';
}
}
document.querySelectorAll('.contacts-number a').forEach(n => {
n.addEventListener('click', onClick);
});
function onClick() {
const div = this.closest('.contacts-number').querySelector('div');
if (div.style.display === 'none') {
div.style.display = 'block';
this.style.display = 'none';
} else {
div.style.display = 'none';
}
}
$header = "<tr>".implode("", array_map(function($n) {
return "<th>$n</th>";
}, array_keys($array)))."</tr>";
$rowsCount = max(array_map(function($n) {
return count($n);
}, $array));
$rows = implode("", array_map(function($i) use($array) {
foreach ($array as $item) {
$row[]= "<td>".(isset($item[$i]) ? $item[$i] : "")."</td>";
}
return "<tr>".implode("", $row)."</tr>";
}, range(0, $rowsCount - 1)));
echo "<table>$header$rows</table>";