PHP использует подстановочный знак для доступа к объекту JSON - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь получить доступ к определенному ключу.Вот мой объект:

stdClass Object ( 
    [ext-118-27-16-0-23] => Array ( 
        [0] => stdClass Object ( 
            [version] => 6 
            [addr] => 0000:0000:0000:0000:0000:FFFF:C0A8:0001
        ) 
        [1] => stdClass Object ( 
            [version] => 4 
            [addr] => 192.168.0.1 
        ) 
    )
) 

В этом случае я ожидаю вывести значение 192.168.0.1 ключа addr.Первый ключ (ext-118-27-16-0-23) меняется, и я не знаю его значение.Шаблон должен выглядеть следующим образом: ext-*

Так что я думаю, мне нужно что-то вроде этого:

$addr = {WILDCARD}[1]->addr;

1 Ответ

3 голосов
/ 03 июня 2019

Вот что я думаю, вы можете сделать

$ipv4Addresses = array_map(function($ip) {
    return $ip->addr;
}, array_filter(current((array) $obj), function($ip) {
    return $ip->version === 4;
}));

Это вернет массив всех свойств IPv4 addr.

Известные точки:

  • Приведите объект к массиву ~ (array) $obj
  • Используйте current() для извлечения первого (единственного) свойства
  • Используйте array_filter(), чтобы уменьшить массив адресов до version 4
  • Используйте array_map() для извлечения только свойства addr

Вы можете использовать array_values() в конечном массиве, чтобы переиндексировать его из 0.

Демо ~ https://3v4l.org/LfDg8

...