Nano Hash - криптовалюты, майнинг, программирование

Как искать и получать значения из ответа jsondecode(), хранящегося в переменной?

У меня есть следующий ответ JSON в https://mysite/info:

{
 "wg0": {
   "privateKey": "[hidden]",
   "publicKey": "XXXXXXXXXXXXXXXXXXX",
   "listenPort": 0,
   "peers": {
     "B3GtLuabWguXoG2Tz8KVukPXx3twn7A+X/SVT8=": {
       "endpoint": "0.0.0.0:5377",
       "latestHandshake": "Oct 28, 2020 1:58:32 UTC",
       "transferRx": "2.432 GB",
       "transferTx": "1.098 GB",
       "allowedIps": [
         "10.85.85.2/32"
       ]
     },
     "2Uqo3X2ubogU92LS4mWsZtF04ah3qJ4gt1g0=": {
       "endpoint": "0.0.0.0:5412",
       "latestHandshake": "Oct 28, 2020 1:58:52 UTC",
       "transferRx": "32.239 MB",
       "transferTx": "220.852 MB",
       "allowedIps": [
         "10.85.85.3/32"
       ]
     }
   }
 }
}

Мне нужно найти в PHP значение allowIps в этом ответе и вернуть соответствующее значение lastHandshake.

Например:

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, 'https://mysite/info');
$result2 = curl_exec($ch2);
curl_close($ch2);

$obj2 = json_decode($result2);

$IPtoSearch = "10.85.85.2/32";

//Now How can I search $IPtoSearch into $obj2 and return latestHandshake value?

...

Спасибо за помощь!

28.10.2020

  • Убедитесь, что вы всегда включаете языковой тег (PHP) в свои сообщения, чтобы гарантировать, что их увидит максимальное количество других пользователей. 28.10.2020
  • Убедитесь, что вы всегда включаете попытку кодирования и/или доказательство исследования/тяжелого труда, это убедит добровольцев, что вы не просто выбрасываете свои требования. Мы не хотим, чтобы вы становились зависимыми от добровольцев, которые делают вашу работу за вас. Помогите Вампиризм - это плохо. Если вы знаете, как получить доступ к вложенным массивам, продемонстрируйте это в своем фрагменте кода. Если вы знаете, как вызвать in_array(), покажите это. @Маг 28.10.2020

Ответы:


1

К сожалению, ваш возвращенный JSON на самом деле недействителен, так как 00000 не является допустимым целым числом. Если вы можете преобразовать 00000 в 0, ваш JSON будет успешно декодирован, и вы сможете найти значение latestHandshake, соответствующее вашему IP-адресу поиска, например так:

$obj2 = json_decode($result2, true);
$IPtoSearch = "10.85.85.2/32";

foreach ($obj2['wg0']['peers'] as $peer) {
    if (in_array($IPtoSearch, $peer['allowedIps'])) {
        $latestHandshake = $peer['latestHandshake'];
        break;
    }
}

echo "Last handshake for $IPtoSearch was at $latestHandshake\n";

Вывод (для ваших образцов данных):

Last handshake for 10.85.85.2/32 was at Oct 28, 2020 1:58:32 UTC

Демо на 3v4l.org

28.10.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..