Как проанализировать Minecraft ops.json для отображения всех пользователей oped, их UUID и общего количества пользователей oped

#php #json #parsing #variables #minecraft

Вопрос:

Извините, если название этого не имеет смысла, я очень новичок в работе с файлами JSON в PHP. Я посмотрел почти везде и несколько раз перефразировал свой вопрос, каждый ответ, который я получаю, похоже, не работает с моим файлом JSON, не уверен, что Minecraft делает что-то другое или я что-то упускаю. Спасибо всем, кто откликнется на это!

Цель

Перечислите всех операторов на моем сервере Minecraft на моем веб-сайте в правильном формате с их UUID и уровнем OP. Я также хотел бы показать текущее количество людей, работающих на сервере.

Пример фотографии того, как я себе это представляю (конечно, с лучшим CSS)

Вот мой PHP-код

 $serverdir = "../Minecraft Server/";
$json_url = $serverdir."ops.json";
$json = file_get_contents($json_url);
$data = json_decode($json, TRUE);

<?php
foreach ($data as $value) {
  echo "$value <br>";
}
 

Этот код в настоящее время просто выплевывает массив 5 раз, мне нужно изменить $data на $data[1-5], чтобы получить фактический вывод, но он выводит имя пользователя, UUID и уровень, но я не вижу, как отформатировать этот тип вывода.

Вот файл JSON

 [
  {
    "uuid": "3afa9281-a239-453f-9538-49b57d9f2d06",
    "name": "Deathx90",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "461e6427-1d5c-43e3-b4ee-f8361884c3a2",
    "name": "Command_String",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "1ab6c2d3-6cae-4937-81af-cf348ca0f16c",
    "name": "sarcazsm",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "83619f6c-d259-4da2-868b-eba807e15b37",
    "name": "Monke_Syndrome",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "584f7a2f-2f8c-453e-a459-6ce8a683f04c",
    "name": "Kreyo813",
    "level": 2,
    "bypassesPlayerLimit": false
  }
]
 

После Решения:

Вот конечный продукт, я также добавляю к нему некоторые дополнительные элементы.

Комментарии:

1. Если вы сделаете a var_dump($data); , вы увидите, что структура json_decode() возвращается. То, что вы получите, — это многомерный массив (массив с массивами), поэтому в вашем цикле foreach $value будет массив с данными. Чтобы получить конкретные значения, вам нужно повторить: $value['uuid'] , $value['name'] и так далее.

2. Я попробовал что-то в этом роде, но, похоже, это не сработало. Я легко мог сделать что-то не так. Объектная нотация сработала для меня, но я могу попробовать это в будущем. Спасибо, что откликнулись!

Ответ №1:

Вы также можете сделать это с помощью обозначения объектов php

 $Object = json_decode($json);
foreach($Object as $obj){
    echo $obj->uuid,'<br>',
         $obj->name,'<br>',
         $obj->level,'<br>';
}
 

Вы можете использовать счетчик, чтобы получить количество пользователей, только пример

 $Object = json_decode($json);
$count = count($Object);

echo '<div><p>Number of OPed Users: (',$count,')</p></div>';
foreach($Object as $obj){
   echo '<div><p>',$obj->uuid,'<br>',
         $obj->name,'<br>',
         $obj->level,'</p></div><hr>';
}
 

Комментарии:

1. Позвольте мне попробовать это очень быстро, это похоже на то, что я видел раньше, но, похоже, это не сработало.