我有一个理论上的问题,我似乎搞不懂。假设我在数据库中有以下数据:
Main Sub1 Sub2
a x y
x t u
u f g我想在PHP/mYSQL中创建一个多维数组,实际上是问“每个'main‘组件是由什么组成的?”
结果会是这样的:
Array
(
[0] => a
(
[0] => x
(
[0] => t
[1] => u
)
(
[0] => f
[1] => g
)
[1] => y
)
)我的努力产生了许多数组,而不是多维数组。
发布于 2014-03-03 10:15:21
你可以使用引用来解决这个问题,尽管结果会变得有点混乱:
$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);输出
Array
(
[x] => Array
(
[0] => t
[1] => Array
(
[0] => f
[1] => g
)
)
[y] => y
[a] => Array
(
[0] => Array
(
[0] => t
[1] => Array
(
[0] => f
[1] => g
)
)
[1] => y
)
[t] => t
[u] => Array
(
[0] => f
[1] => g
)
[f] => f
[g] => g
)您可以通过仅过滤出数组来清理结果:
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
)
)https://stackoverflow.com/questions/22137475
复制相似问题