Эхо-часть двумерного массива JSON - PullRequest
0 голосов
/ 06 октября 2019

У меня есть вложенный массив json на

$sdata['my_server']['server_ips'];

Чей результат выглядит следующим образом

{ "ip_address": [ { "access": "private", "address": "x.x.x.x", "family": "IPv4" }, { "access": "public", "address": "xxxx:xxxx:xxxx:xxx:xxxx:xxxx:xxxx:xxxx", "family": "IPv6" }, { "access": "public", "address": "xxx.xxx.xxx.xxx", "family": "IPv4", "part_of_plan": "yes" } ] }

Я хочу, чтобы только значение ipv4 ip address в публичной части доступа означало это

"address": "xxx.xxx.xxx.xxx"

Есть какие-нибудь идеи по этому поводу? Спасибо

1 Ответ

1 голос
/ 07 октября 2019

Вы можете использовать array_filter с json_decode

 $r = array_filter(json_decode($json, true)['ip_address'], function($v){
  return ($v['family'] === 'IPv4' && $v['access'] === 'public');
 });

Рабочий пример: - https://3v4l.org/k0M0V

print_r($r) даст вам массив, вы можете использовать array_shiftи чем использовать $r['address']. Если существует несколько значений, используйте array_column для address и implode.

...