如何在数组中搜索值的一部分

问题描述 投票:0回答:1

好吧,我正在尝试为我玩的游戏(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"];

    }

}

编辑:我忘了提到老板也改变了

php
1个回答
1
投票

您可以使用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>';
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.