使用php从mysql数据库构建多维数组
我有一个理论上的问题,我似乎想不出来。假设数据库中有以下数据:使用php从mysql数据库构建多维数组,php,mysql,multidimensional-array,Php,Mysql,Multidimensional Array,我有一个理论上的问题,我似乎想不出来。假设数据库中有以下数据: Main Sub1 Sub2 a x y x t u u f g 我想在PHP/mYSQL中创建一个多维数组,方法是询问“每个‘主’组件由什么组成?” 结果会是这样的: Array ( [0] => a ( [0] => x ( [0] => t [1] =>
Main Sub1 Sub2
a x y
x t u
u f g
我想在PHP/mYSQL中创建一个多维数组,方法是询问“每个‘主’组件由什么组成?”
结果会是这样的:
Array
(
[0] => a
(
[0] => x
(
[0] => t
[1] => u
)
(
[0] => f
[1] => g
)
[1] => y
)
)
我的努力产生了许多数组,而不是多维数组。您可以使用引用来解决这个问题,尽管结果会有点混乱:
$res = [];
foreach ($rows as $row) {
// check if we have each sub component
if (!isset($res[$row['sub1']])) {
$res[$row['sub1']] = $row['sub1'];
}
if (!isset($res[$row['sub2']])) {
$res[$row['sub2']] = $row['sub2'];
}
// build new component with references to the sub components
$res[$row['main']] = [&$res[$row['sub1']], &$res[$row['sub2']]];
}
print_r($res);
输出
您可以通过仅过滤出阵列来清理结果:
print_r(array_filter($res, 'is_array'));
输出
您是否介意包含数据库检索语法(例如,
while($row=mysql\u fetch\u assoc($result)){
)这样我就可以理解你的命名约定了?谢谢你的帮助!@user1912319答案对数据库中的行也有同样的作用。我没有将$行理解为$row
,然后检查$row
是否已设置。你介意稍微扩展一下吗?@user1912319我已经添加了一些注释,希望能有所帮助。
print_r(array_filter($res, 'is_array'));
Array
(
[x] => Array
(
[0] => t
[1] => Array
(
[0] => f
[1] => g
)
)
[a] => Array
(
[0] => Array
(
[0] => t
[1] => Array
(
[0] => f
[1] => g
)
)
[1] => y
)
[u] => Array
(
[0] => f
[1] => g
)
)