【发布时间】:2018-10-03 10:22:05
【问题描述】:
我正在尝试从 MySQL 查询创建一个多维数组。这个阵列有 3 层深。每个用户都有一个membershipid,这个会员ID可以有多个characterid。每个characterid 都可以有多个属性。
membershipid -> characterid(最多 3 个)-> light,racehash。
$query = "SELECT p.membershipid, p.displayname, c.characterid, c.light, c.racehash
FROM Players as p
LEFT JOIN Characters as c
ON c.membershipid = p.membershipid";
$result = $mysqli->query($query) or die("SQL Error: Members konden niet worden opgehaald.");
// Loop through the requested data, add to an array
while ($data = mysqli_fetch_assoc($result)) {
$categorylist[ $data['membershipid'] ] = array(
'displayname' => $data['displayname'],
array('characterid' => $data['characterid'],
'light' => $data['light'],
'racehash' => $data['racehash']
)
);
} // end while statement
// A test to see how many items in array
echo "<pre>\n";
print_r($categorylist);
echo "</pre>\n";
这可行,但仅显示每个人的 1 个字符,而查询结果显示每个 membership id 的每个 character id。
Array
(
[4611686018428931875] => Array
(
[displayname] => White_Anomaly
[0] => Array
(
[characterid] => 2305843009264668680
[light] => 554
[racehash] => 3887404748
)
)
[4611686018437972738] => Array
(
[displayname] => Bpunisher7
[0] => Array
(
[characterid] => 2305843009277456739
[light] => 392
[racehash] => 2803282938
)
)
我的数组定义可能有问题,并且每次都覆盖我的 characterid,因为我只显示最新的characterid。
首选数组:
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
)
)
)
)
【问题讨论】:
标签: php mysql arrays multidimensional-array