2017-12-18 57 views
0

好吧我正在嘗試爲我玩的遊戲(Runescape)創建一個boss boss日誌。我在互聯網上發現,開發者非常有禮貌地擁有一個冒險日誌,記錄你在遊戲中做的不同活動,老闆是其中的一員。所以我就信息到一個多維數組構造成這樣:如何搜索一個數組的部分值

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'arras」

「我殺了3個kree'arras」

,所以我不能使用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"]; 

    } 

} 

編輯:我忘了提,老闆也會發生變化

+0

如果只有數量的變化,但其餘的保持不變,那麼它可能與if語句一起工作,如果在通用比較字符串中將通配符放在數字的位置。 – Geshode

+0

我忘了提老闆也改變了 –

回答

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>'; 
    } 
} 
+0

謝謝sooo我知道這是一個簡單的解決方案。 –