我一直在这个问题上有一段时间,现在有一个手动过程,我将数据构建成我想要的数组格式,但是我发现它非常耗时且非常容易打破。SQL将数据加入到多维数组中
所以我试图自动化以下任务,尽我所能。例如,我在我的数据库中有两个表格,一个users
表格和一个addresses
表格。
users
表与addresses
表具有一对多的关系。
SELECT users.name AS 'users.name',
users.age AS 'users.age',
addresses.street AS 'users.addresses.street',
addresses.suburb AS 'users.addresses.suburb'
JOIN addresses ON
users.user_id = addresses.user_id
FROM users;
如果我有2个用户一个有2个地址和一个3,它应该返回5行:
我使用查询联接表并拉下每一行,例如查询拉下我的数据像这样:
| users.name | users.age | users.addresses.street | users.addresses.suburb |
Joshua | 28 | 3假St |悉尼
Joshua | 28 | 16新St |悉尼
Joshua | 28 | 140 Apple St |悉尼
Tim | 34 | 18约翰St |悉尼
Tim | 34 | 143 Clark St |悉尼
在获取结果作为关联数组将返回像数组结果如下:
array(
'users.name' => 'Joshua',
'users.age' => 28,
'users.addresses.street' => '3 Fake St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Joshua',
'users.age' => 28,
'users.addresses.street' => '16 New St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Joshua',
'users.age' => 28,
'users.addresses.street' => '140 Apple St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Tim',
'users.age' => 34,
'users.addresses.street' => '18 John St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Tim',
'users.age' => 34,
'users.addresses.street' => '143 Clark St',
'users.addresses.state' => 'Sydney'
)
什么话,我想上面的阵列做的就是把每个结果行成多维数组像这样:
array (
'users' => array(
'name' = > 'Joshua',
'age' => 28,
'addresses' =>
array(
'street' => '3 Fake St',
'state' => 'Sydney'
),
array(
'street' => '16 New St',
'state' => 'Sydney'
),
array(
'street' => '140 Apple St',
'state' => 'Sydney'
)
),
),
array (
'users' => array(
'name' = > 'Tim',
'age' => 44,
'addresses'' =>
array(
'street' => '18 John St',
'state' => 'Sydney'
),
array(
'street' => '143 Clark St',
'state' => 'Melborune'
)
),
)
正如你可以看到在数据库返回的数组键各期应爆炸,然后变成了多维数组,最后爆炸键应该是核心价值。
我已经完成了这个使用数组获取和一些疯狂的检查,只获得某些键名称,并把它们放入一个数组,然后我使用array_map构建数组结构...但它对于大数据集和单调乏味不得不手动写出每一个关系,并将其映射到一切都是愚蠢的,我认为。
我一直在试图建立一些符合我上面的描述但没有运气的东西,因此我现在在这里。
注
以上是针对一组数据的一个例子,我试图创建此,因此它可以很容易地与多组数据的完成,不必写一个循环和手动创建多维数组。
这些都是真的不同寻常的别名 – Strawberry
嗯,我玩了确切的结构和试图使用别名来帮助构建数组关联。我完全接受建议。我只是有一种感觉,我错过了我错过的难题的重要部分。希望有人可以引发一些想法或线索,我错过了或在思考 – joshualawson
嗯 - 这只是一个简单的PHP循环。我会写出一个解决方案,但是我在PHP中操作数组其实很糟糕 - 但有数千个例子。但我不会包含'。'在别名中。我认为这只是要求麻烦, – Strawberry