#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. Позвольте мне попробовать это очень быстро, это похоже на то, что я видел раньше, но, похоже, это не сработало.