从MySQL查询构建多维PHP数组
我正在尝试从MySQL查询创建多维数组。这个阵列有3层深。每个用户都有一个从MySQL查询构建多维PHP数组,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我正在尝试从MySQL查询创建多维数组。这个阵列有3层深。每个用户都有一个成员身份id,此成员身份id可以有多个字符。每个characterid都可以有多个属性 membershipid->characterid(最多可以是3个)->灯光、杂色 SQL查询的结果如下所示: 我的数组定义可能有问题,每次都会覆盖我的characterid,因为我只显示最新的characterid 首选阵列: // Loop through the requested data, add to an array w
成员身份id
,此成员身份id可以有多个字符。每个characterid
都可以有多个属性
membershipid->characterid(最多可以是3个)->灯光、杂色
SQL查询的结果如下所示:
我的数组定义可能有问题,每次都会覆盖我的characterid,因为我只显示最新的characterid
首选阵列:
// Loop through the requested data, add to an array
while ($data = mysqli_fetch_assoc($result)) {
extract($data,EXTR_PREFIX_ALL,'data');
$categorylist[$data_membershipid]['displayname'] = $data_displayname;
$categorylist[$data_membershipid][$data_characterid] = ['light' => $data_light,
'racehash' => $data_racehash];
} // end while statement
如果$categorylist[$data['membershipid']]存在,它将被下一个字符覆盖
您必须检查$categorylist[$data['membershipid']]是否存在。在本例中,使用array_push()添加第二个字符。否则您的代码仍然有效。如果您允许我稍微重新构造您的结果数组,这应该是一种更好的方法:
// Loop through the requested data, add to an array
while ($data = mysqli_fetch_assoc($result)) {
extract($data,EXTR_PREFIX_ALL,'data');
$categorylist[$data_membershipid]['displayname'] = $data_displayname;
$categorylist[$data_membershipid]['characters'][$data_characterid] = ['light' => $data_light,
'racehash' => $data_racehash];
} // end while statement
如您所见,我已将“characterid”移动为子数组的键。这样做是为了不覆盖其他字符
我还对数组使用了较新的表示法。这里的extract()
只是为了让代码更容易阅读,但是您可以去掉它
也许最好将字符放在它们自己的数组中,如下所示:
谢谢,这帮助我将正确的数据放入数组。现在,我可以通过这个数组循环构建一个表来显示信息。如果我可以跟进您的解决方案。我已经实现了你所说的,但是如果我想从创建的数组中打印出数据,我该怎么做呢?由于数组中的所有内容都有不同的(字符)id。我在答案中添加了一些内容,但我不太理解你的问题。您能具体说明“从创建的数组打印数据”的意思吗?
Array
(
[4611686018428931875] => Array
(
[displayname] => White_Anomaly
[characters] => Array
(
[0] => Array
(
[characterid] => 2305843009264668678
[light] => 370
[racehash] => 3887404748
)
[1] => Array
(
[characterid] => 2305843009264668680
[light] => 554
[racehash] => 3887404748
)
)
)
[4611686018437972738] => Array
(
[displayname] => Bpunisher7
[characters] => Array
(
[0] => Array
(
[characterid] => 2305843009265241161
[light] => 534
[racehash] => 2803282938
)
[1] => Array
(
[characterid] => 2305843009265241163
[light] => 524
[racehash] => 3887404748
)
[2] => Array
(
[characterid] => 2305843009277456739
[light] => 392
[racehash] => 3887404748
)
)
)
)
// Loop through the requested data, add to an array
while ($data = mysqli_fetch_assoc($result)) {
extract($data,EXTR_PREFIX_ALL,'data');
$categorylist[$data_membershipid]['displayname'] = $data_displayname;
$categorylist[$data_membershipid][$data_characterid] = ['light' => $data_light,
'racehash' => $data_racehash];
} // end while statement
// Loop through the requested data, add to an array
while ($data = mysqli_fetch_assoc($result)) {
extract($data,EXTR_PREFIX_ALL,'data');
$categorylist[$data_membershipid]['displayname'] = $data_displayname;
$categorylist[$data_membershipid]['characters'][$data_characterid] = ['light' => $data_light,
'racehash' => $data_racehash];
} // end while statement