фильтровать и печатать массив в более удобочитаемом виде

$sql = "select * from banners where bgroup > ''";
$st = $db->prepare($sql);
$st->execute();
$data = $st->fetchAll();
print_r($data);

Результат (многомерный массив):

Array (
[0] => Array (
[id] => 59
[0] => 59
[date] => 2018-11-23 23:44:47
[1] => 2018-11-23 23:44:47
[src] => banners/5b5ccafff3f6a.jpg
[2] => banners/5b5ccafff3f6a.jpg
[name] => abc
[3] => abc
)
[1] => Array...
[2] => Array...

Я хочу отфильтровать вышесказанное — чтобы получить только те подмассивы, где name = abc и печатать их без индексов и разделять новой строкой.

Как это:

Array(
Array{
[id] => 59
[date] => 2018-11-23 23:44:47

Любая помощь?

-1

Решение

Вам нужно изменить запрос, а также режим выборки, чтобы получить желаемый результат напрямую: —

$st = $db->prepare("SELECT * from banners WHERE name = ? AND bgroup > ''");
$st->execute(array('abc'));
$data = $st->fetchAll(PDO::FETCH_ASSOC);
print_r($data);

Примечание: — использовать prepared statements правильно и полностью.

Ссылка:-PDOStatement :: fetchAll

1

Другие решения

Способ 1:
измените ваш SQL-запрос, чтобы он выглядел следующим образом:

$sql = "select * from banners where name='abc' AND bgroup > ''";

Способ 2 (менее эффективен, чем предыдущий):

$newArr = [];

foreach($results as $result)
{
if($result['name'] == 'abc')
{
$newArr[] = $result;
}
}

echo "<pre>";
print_r($newArr);
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector