print_r($var);
не дублировались посты нужно воспользоваться инъекцией зависимостей и обязательно подключить пару серьезных библиотек, например, AR/ORM.$vars = [];
foreach($posts as $post)
$vars[$post->author_id][] = $post->name;
print_r($vars); // теперь у Вас записи группированы по пользователю, делайте что хочется,
// например:
foreach ($users as $user)
if (isset($vars[$user->id]))
print_r(implode(', ', $vars[$user->id]));
foreach (range(2016, 2025) as $year)
if (intval($_GET['year']) == $year)
$jdns['year'] = (string) $year;
if (in_array(intval($_GET['year']), range(2016, 2025)))
$jdns['year'] = (string) intval($_GET['year']);
if (intval($_GET['year']) >= 2016 && intval($_GET['year']) <= 2025)
$jdns['year'] = (string) intval($_GET['year']);
header("Location: /{$url}", true, $status);
— однако, стоит учитывать, что это может не сработать с некоторыми ajax-библиотеками, там уж смотрите по обстоятельствам. $pagination = '';
if ($page != 1) {
$pagination .= "<a class=\"page\" href=\"/app/index?page={$prev}\"></a>";
}
// ...
$o = new class ([1, 2, 3]) implements \Iterator {
protected array $data;
protected int $position;
public function __construct(array $data) { $this->data = $data; $this->position = 0; }
public function current () { return $this->data[$this->position]; }
public function key () { return $this->position; }
public function next () { ++$this->position; }
public function rewind () { $this->position = 0; }
public function valid () { return isset($this->data[$this->position]); }
};
foreach ($o as $i => $v) echo "$i => $v", PHP_EOL;
$source = [...];
$pattern = [321, 8734, 210, 2131];
usort($source, function ($a, $b) use ($pattern) {
$x = array_search($a['id'], $pattern); // Вам нужно искать свое значение, разумеется
$y = array_search($b['id'], $pattern);
if ($x == $y) return 0;
return ($x < $y) ? -1 : 1; // если индекс первого элемента больше, он "меньше"
});
/родитель1/родитель2/потомок
, то Вам нужен только потомок, а запрос от него всех родителей нужен только для формирования ссылки. Но вообще, не лучшая идея, в этом нет особого смысла, если это не строгое желание заказчика и сокращение ссылки при этом не ведет в соответствующий раздел (но лучше обойтись именно хлебными крошками на странице, ведущими по прямой ссылке в категорию). <!-- вместо -->
<input type="radio" name="sortType" value="sort-az" checked="checked" id="sort-az"><label for="sort-az">Название: А — Я</label>
<!-- например: -->
<a href="/showAll?order=asc&sort=name">Название: А — Я</a>
document.getElementById('sort-az').onchange = function (event) {
if (event.target.checked)
document.location.href = '/showAll?order=asc&sort=name';
};
SELECT *, COUNT(status) as status_count FROM table_name WHERE name = :name GROUP BY user_id, status;
SELECT COUNT(ok.status) as status_ok_count, COUNT(trash.status) as status_trash_count, table_name.user_id, table_name.name
FROM table_name WHERE name=?
INNER JOIN table_name as ok ON ok.user_id = table_name.user_id
INNER JOIN table_name as trash ON trash.user_id = table_name.user_id
WHERE table_name.name = :name AND ok.status = 'ok' AND trash.status='trash'
GROUP BY table_name.user_id;
$names = explode(', ', mb_strtolower('Катя, Марина, Миша')); // обратите внимание на разделитель
$text = mb_strtolower('Сегодня Катя пошла гулять. Миша и Марина пришли на площадку немного позже, Катя увидев их зразу же подбежала к ним');
$count = 0;
foreach ($names as $name) $count += mb_substr_count($text, $name);
echo $count, PHP_EOL;
$names = implode('|', explode(', ', 'Катя, Марина, Миша'));
$text = 'Сегодня Катя пошла гулять. Миша и Марина пришли на площадку немного позже, Катя увидев их зразу же подбежала к ним';
$count = preg_match_all("/(^|\W+)($names)(\W+|$)/ui", $text);
echo $count, PHP_EOL;
foreach ($stops as $stop) { // $stop должно быть строкой, разумеется
if ( mb_strpos($description, 'тени') !== false && mb_strpos($description, $stop) === false ) {
echo 'Mission complete: ', $description, PHP_EOL;
}
}