我正在为游戏制作一些统计跟踪代码(是的,这是runescape。起诉我)。
我想使用api从高分中提取信息,这会产生一个看起来像这样的数组(使用print_r捕获)
Array
(
[getHiscore] => Array
(
[overall] => Array
(
[rank] => 61995
[lvl] => 2273
[totalxp] => 193310588
)
[attack] => Array
(
[rank] => 93406
[lvl] => 97
[totalxp] => 11747494
)
......等等。 我的问题是我怎样才能把这个api给我的东西放到数据库表中;我希望为特定用户获取此类数组,并使用它更新其统计信息。 我会用爆炸吗?这对我来说似乎是个正确的想法,但我怎么会用它来分割单独的数字和单词呢?
我的数据库尚未完全实现,但每条记录将包含一个用户名,然后是27个“技能”中的每个级别和总xp。这几乎肯定不是数据库设计的最佳实践,但我是新手,因为它是我能做的最好的。
答案 0 :(得分:0)
只需使用foreach循环拉出数组并编写一些sql来插入数据。我对您的数据库一无所知,所以如果您需要帮助,请更新您的问题。
最简单的方法:
foreach($highscores as $highScoreType => $highScoreValues){
$rank = $highScoreValues['rank'];
$lvl = $highScoreValues['lvl'];
$totalXp = $highScoreValues['totalxp'];
//then it's up to you to put it into a table somehow.
}
$ highScoreType将包含“整体”,“攻击”等值
当遍历关联数组(哈希映射/哈希表,实际上所有PHP数组都在下面)时,foreach循环的这种格式非常方便,它不仅可以获取指向条目的当前值,也是该条目的关键。
因此,假设我们有一个带有键'foo'和值'bar'的条目哈希映射。如果我想显示'bar',我会很简单
echo $map['foo'];//will output 'bar'
如果我将它放入上述类型的foreach循环
foreach($map as $fooKey => $barValue) {
echo $fooKey;//outputs 'foo'
echo $barValue;//outputs 'bar'
}
答案 1 :(得分:0)
假设这全部存储在变量$ary
中:
$ary['getHiscore']['overall']['rank'] = 61995;
$ary['getHiscore']['overall']['lvl'] = 2273;
$ary['getHiscore']['overall']['totalxp'] = 193310588;
$ary['getHiscore']['attack']['rank'] = 93406;
$ary['getHiscore']['attack']['lvl'] = 97;
$ary['getHiscore']['attack']['totalxp'] = 11747494;
所以,要获得这些值,它是:
$attackLevel = $ary['getHiscore']['attack']['lvl'];
如果你
echo $attackLevel;
它将是97
。
答案 2 :(得分:0)
你不需要爆炸。它是一个阵列,因此它已经爆炸了。您需要遍历它以构建有意义的查询。
我不熟悉runescape所以我不知道你的例子是否只显示你需要丢弃某些部分的相关字段。如果它是前者,那么你应该尝试像
这样的东西$query="insert into stats_table (description, rank, lvl, totalexp) values (:description, :rank, :lvl, :totalext);";
$Statement = $DBConn->prepare($query);
foreach($fullArray as $description=>$subArray) {
$Statement->bindValue(':description',$description, PDO::PARAM_STR);
foreach($subArray as $key=>$value) {
$Statement->bindValue($key,$value, PDO::PARAM_STR);
}
$Statement->execute();
}
这将插入包含
的两行overall 61995 2273 193310588
attack 93406 97 11747494
PD:对于您正在使用的数据库引擎,$ DBConn是PDO connection instance。