二维 json 数组的回显部分
Echo part of two dimentional json array
我在
有一个嵌套的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 地址的值 public 部分表示这个
"address": "xxx.xxx.xxx.xxx"
有什么想法吗?谢谢
您可以将 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
by address
并使用 implode
.
我在
有一个嵌套的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 地址的值 public 部分表示这个
"address": "xxx.xxx.xxx.xxx"
有什么想法吗?谢谢
您可以将 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
by address
并使用 implode
.