Как предвидеть изменение многомерного массива и сопоставить все данные в нужных местах - PullRequest
0 голосов
/ 27 января 2019

Хорошо, я извлекаю данные из API, и он возвращает объекты JSON.В этих данных 4 поля, отсутствие лучшего слова, уровень, хр, ранг, id.Уровень относится к уровню определенного навыка, ранг относится к общему рейтингу в навыке по сравнению с другими игроками, xp относится к общему xp в навыке, а id относится к определенному навыку.То, как данные API сортируют данные с наивысшего значения xp до минимального значения xp, всего 27 навыков.Хорошо, теперь, когда я понял это так, как я пытаюсь соединить точки, так сказать.Ex id 6 в массиве ниже - это магия навыка, а id 17 - вор навыка.Таким образом, поскольку api сортируется от наивысшего значения xp к наименьшему, $ array [skillvalues] [0] [id] не всегда будет равно 6 (magic).Тогда я бы не знал, как соединить точки, что все значения в $ array [skillvalues] [0], в этом примере, относятся к магическому навыку.Это означает, что мой уровень в магии - 99, мой XP в магии - 32 мили, мой ранг по сравнению с другими игроками - 56 731

. Этот API выдает больше данных, чем данных о навыках ... Я смог получить его доданные, которые меня интересуют, и это об этом.Я подготовил переменные для хранения значений в нужном месте, мне просто нужны части, которые соединяют точки.Я попытался найти здесь ответ в Google, и все, с чем я сталкиваюсь, не решает две проблемы, которые я изложил выше.Я смог использовать циклы foreach для целевого поля id, но я не думаю, что это то, что мне нужно.Буду признателен за любые отзывы.

Array
(
  [skillvalues] => Array
      (
         [0] => Array
             (
                [level] => 99
                [xp] => 322039589
                [rank] => 56731
                [id] => 6
             )

         .
         .
         .


         [26] => Array
             (
                [level] => 73
                [xp] => 10590542
                [rank] => 251597
                [id] => 17
             )

     )
     //skill ids if it matters
     AttacK: 0
     Defence: 1
     Strength: 2
     Hitpoints: 3
     Ranged: 4
     Prayer: 5
     Magic: 6
     Cooking: 7
     Woodcutting: 8
     Fletching: 9
     Fishing: 10
     Firemaking: 11
     Crafting: 12
     Smithing: 13
     Mining: 14
     Herblore: 15
     Agility: 16
     Thieving: 17
     Slayer: 18
     Farming: 19
     Runecrafting: 20
     Hunter: 21
     Construction: 22
     Summoning: 23
     Dungeoneering: 24
     Divination: 25
     Invention: 26

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Для всех будущих читателей, пожалуйста, не обращайте внимания на мои вопросы о базе данных, потому что код Second2None разделяет все !! Я благодарю вас оооочень много, вы спасатель !!!!

все, что вам нужно сделать, это .....

$skills_arr = array(
 '0'  => "Attack",     
 '1'  => "Defence",      
 '2'  => "Strength",     
 '3'  => "Hitpoints",    
 '4'  => "Ranged",       
 '5'  => "Prayer",       
 '6'  => "Magic",        
 '7'  => "Cooking",      
 '8'  => "Woodcutting",  
 '9'  => "Fletching",    
 '10' => "Fishing",      
 '11' => "Firemaking",   
 '12' => "Crafting",     
 '13' => "Smithing",     
 '14' => "Mining",       
 '15' => "Herblore",     
 '16' => "Agility",      
 '17' => "Thieving",     
 '18' => "Slayer",       
 '19' => "Farming",      
 '20' => "Runecrafting", 
 '21' => "Hunter",       
 '22' => "Construction", 
 '23' => "Summoning",    
 '24' => "Dungeoneering",
 '25' => "Divination",   
 '26' => "Invention"    
);
foreach($highscores[skillvalues] as $skills){
  $skill = $skills_arr[$skills['id']];
  $xp = $skills['xp'];
  $rank = $skills['rank'];
  $level = $skills['level'];
  if($skill == "Slayer"){ 
   echo "My level in " . $skill . " is " . $level . " and I 
   have a total of " . $xp . " xp";//this is outputing all the info for slayer skill
  }

}
0 голосов
/ 27 января 2019

Вы можете поместить все навыки в массив, используя идентификатор навыка в качестве Ключа. Если бы вы назвали массив как echo $skills_arr[1] Защита будет отражена. Вы также можете поместить их в базу данных и вызывать их в зависимости от ваших предпочтений, количества навыков и т. Д.

$skills_arr = array(
    '1' => 'Defence',
    '2' => 'Strength',
    '3' => 'Hitpoints',
    '4' => 'Ranged',
    '5' => 'Prayer',
    '6' => 'Magic',
    '7' => 'Cooking'
);
//etc


foreach($array[skillvalues] as $skills){
    echo 'Skill Type:'.$skills_arr[$skills['id']];
    echo 'Skill XP:'.$skills['xp'];
    echo 'Skill Rank:'.$skills['rank'];
    echo 'Skill Level:'.$skills['level'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...