好吧,我正在尝试为我玩的游戏(Runescape)创建boss杀死日志。我在互联网上发现开发人员非常亲切地拥有一个带有冒险日志的api,记录你在游戏中做的不同活动,老板就是其中之一。所以我把信息变成了一个多维数组,结构如下:
Array
(
[magic] => 5379429
[questsstarted] => 5
[totalskill] => 2333
[questscomplete] => 134
[questsnotstarted] => 95
[totalxp] => 163169890
[ranged] => 18656921
[activities] => Array
(
[0] => Array
(
[date] => 17-Dec-2017 21:51
[details] => I killed 8 graceful followers of Armadyl, all called Kree'arra. The gods have little imagination for names.
[text] => I killed 8 Kree'arras.
etc
.
.
)
上面的数组并不是整个数组,我把它缩短为不太长,因为它是一个很大的数组。我想要做的只是获得说“我杀了x老板”的价值观,在这种情况下,老板将是Kree'arra。让我难过的是字符串包含一个更改的数字,如下所示:
“我杀了5个kree'arra”
“我杀了3个kree'arra”
所以我不能使用if语句,因为我永远不会知道使用比较运算符的确切字符串。我尝试使用array_search('I killed', array_column($runemetrics, 'text'))
,但屏幕空白。我尝试了一些我在stackoverflow上找到的答案,但要么我得到了一个空白屏幕,要么部分是我想要的。我认为这是一个简单的解决方案。这是我的代码:
$get_runemetrics = file_get_contents("https://apps.runescape.com/runemetrics/profile/profile?user=Thee_Newb&activities=20");
$runemetrics = json_decode($get_runemetrics, true);
if(isset($runemetrics["activities"]) === TRUE){
for($i = 0; $i < count($runemetrics["activities"]); $i++){
echo $runemetrics["activities"][$i]["text"];
}
}
编辑:我忘了提到老板也改变了
您可以使用strpos()
来检查text
是否有'I killed'
字符串
for($i = 0; $i < count($runemetrics["activities"]); $i++){
$text = $runemetrics["activities"][$i]["text"];
if (strpos($text, 'I killed') > -1) {
echo $text . '<br>';
}
}