SQL + PHP Показать многомерный массив - PullRequest
0 голосов
/ 05 сентября 2018

Мой SQL-запрос возвращает эти значения:

Column1     Column2
V1          V1
V1          V2
V1          V3
V1          V4
V2          V1
V2          V2
V3          V1

Fetchall () сохраняет результат в массиве, подобном этому.

Array
(
    [0] => Array
        (
            [Column1] => V1         
            [Column2] => V1
        )

    [1] => Array
        (
            [Column1] => V1         
            [Column2] => V2
        )

    [2] => Array
        (
            [Column1] => V1         
            [Column2] => V3
        )

    [3] => Array
        (
            [Column1] => V1         
            [Column2] => V4
        )
    [4] => Array
        (
            [Column1] => V2
            [Column2] => V1
        )
    [5] => Array
        (
            [Column1] => V2
            [Column2] => V2
        )
    [6] => Array
        (
            [Column1] => V3
            [Column2] => V1
        )
)

Я бы так хотел показать. Я пытаюсь с двойным foreach ...

V1
    V1
    V2
    V3
    V4
V2
    V1
    V2
V3
    V1

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Из того, что я вижу, вы хотите сгруппировать результаты по значению Column1. В этом случае вы можете просто написать:

$result = [];

foreach ($array as $row) {
    // Using PHP 7.1+
    ['Column1' => $key, 'Column2' => $value] = $row;
    // Using PHP before 7.1
    $key = $row['Column1'];
    $value = $row['Column2'];

    if (! array_key_exists($key, $result)) {
        $result[$key] = [$value];
    } else {
        $result[$key][] = $value;
    }
}
0 голосов
/ 05 сентября 2018

Простой цикл foreach должен делать это довольно счастливо. Все, что вам нужно, это запомнить значение Column1, чтобы вы могли определить, когда первичный ключ при отсутствии лучшего слова изменился.

Я протестировал это на CLI, поэтому вам, возможно, придется изменить его, чтобы использовать какой-то HTML, если вы хотите, чтобы он хорошо отображался в браузере.

$arr = [
        ['Column1'=>'V3' , 'Column2'=>'V1'],
        ['Column1'=>'V1' , 'Column2'=>'V1'],
        ['Column1'=>'V2' , 'Column2'=>'V1'],
        ['Column1'=>'V1' , 'Column2'=>'V2'],
        ['Column1'=>'V1' , 'Column2'=>'V3'],
        ['Column1'=>'V1' , 'Column2'=>'V4'],
        ['Column1'=>'V2' , 'Column2'=>'V2'],
];

$col1 = array_column($arr, 'Column1');
$col2 = array_column($arr, 'Column2');

array_multisort($col1, SORT_ASC, $col2, SORT_ASC, $arr);

$lastKey = null;
foreach($arr as $subarr) {
    if ( $lastKey != $subarr['Column1'] ) {
        echo $subarr['Column1'] . PHP_EOL;
        echo "\t" . $subarr['Column2'] . PHP_EOL;
        $lastKey = $subarr['Column1'];
    } else {
        echo "\t" . $subarr['Column2'] . PHP_EOL;
    }
}

РЕЗУЛЬТАТ

V1
        V1
        V2
        V3
        V4
V2
        V1
        V2
V3
        V1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...