Хотя я, если честно, искал какой-то вариант в одну строку, грубо говоря - некий оператор, позволяющий обратиться нужным мне образом к массиву.
echo eval("return \$data$keys_str;");
echo array_reduce($keys_arr,function($data, $key){return isset($data[$key])?$data[$key]:null;},$data);
Работающий примерecho array_reduce($keys_arr, function($data, $key) {
return isset($data[$key]) ? $data[$key] : null;
}, $data);
Используются:SELECT * FROM `video` ORDER BY 'id' LIMIT 5 OFFSET 10
вернет результаты с одиннадцатого по пятнадцатый. Limit = сколько выбрать результатов, offset - сколько пропустить.$results_per_page = 19;
$page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1; // если страница не указана, то будет 1
$limit = $results_per_page;
$offset = $results_per_page * ($page - 1); // для вторй страницы отступ будет 19, для третьей - 38 и так далее.
public static function renderPaginator($total, $current, $indent = 3)
{
$start = 1 + $indent;
$end = $total - $indent;
$mid_start = $current - $indent;
$mid_end = $current + $indent;
?>
<nav style="margin: 0 auto;">
<ul class="pagination">
<?
$skip1 = ($current < $start || $current > $end);
if ($current == 1) { // previous
?><li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">«</span></a></li><?
} else {
?><li><a href="?page=<?=($current-1)?>" aria-label="Previous"><span aria-hidden="true">«</span></a></li><?
}
for ($p = 1; $p <= $total; $p++) { // each page
if ($p == $current) {
?>
<li class="active"><a href="#"><?=$p?> <span class="sr-only">(текущая)</a></li><?
} else {
if($p < $start
|| ($p > $mid_start && $p < $mid_end)
|| $p > $end
|| ($p == $start && $p == $mid_start)
|| ($p == $end && $p == $mid_end)
) {
?>
<li><a href="?page=<?=$p?>"><?=$p?></a></li><?
} elseif($p == $start || $p == $end) {
?>
<li class="disabled"><a href="#">...</a></li><?
}
}
}
if ($current == $total) { // next
?><li class="disabled"><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a></li><?
} else {
?><li><a href="?page=<?=($current-1)?>" aria-label="Next"><span aria-hidden="true">»</span></a></li><?
}
?>
</ul>
</nav>
<?
}
1 -2 - 3 ... 39 - 40 - 41 - 42 - 43 -44 - 45 ... 98 - 99 -100
function array2Menu($items, $level = 0) {
$result = '';
foreach ($items as $item) {
$class= ""; // впишите свои классы в зависимости от $level
$result .= "<li class=\"$class\"><a href=\"{$item['code']}\">{$item['name']}</a>";
if (!empty($item['childs'])) {
$result .= array2Menu($item['childs'], $level + 1);
}
$result .= "</li>";
}
return "<ul class=\"level$level\">$result</ul>"; // тоже впишите свои классы в зависимости от $level
}
foreach ($products as $productJSON) {
$product = json_decode($productJSON, true);
?>
<div class="product">
<h2><?=$product['name']?><h2>
<p><?=$product['description']?></p>
<img src="/images/products/<?=$product['Preview_image']?>">
</div>
<?}
$response = [
'status': 'error', // или 'ok', тогда другие поля не указываются
// дальше статус по каждому из полей с ошибкой
'email': 'already_used', // или 'invalid' или еще какие-то ваши статусы
'phone': 'invalid'
];
return json_encode($response, $flags);
$ff['money'] = intval($ff['money']) - intval($ff1['money']);
$last = $str[strlen($str) - 1];
$pos = -1;
$result = [];
while(($pos = strpos($str, $last, $pos+1))!==false) {
$result[] = $pos;
}
$input = explode('_', 'max_rsya_new_hfequncy_platya_1priority');
array_walk($input, function($str, $i){
printf("%'-".($i*2+strlen($str))."s<br>\n", $str);
});
sandbox.onlinephpfunctions.com/code/24a9c7308f4e27... $my_var = foreach ...
ошибочна уже сама по себе. SELECT DISTINCT DATE_FORMAT(user_time, '%Y-%m-%d') date
FROM wp_konkurs
ORDER BY date DESC
LIMIT 14
header("Content-Type: text/html; charset=utf-8");?