Mysql Query返回这些值:
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
一个简单的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
从我看到你想要通过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;
}
}