PHP 使用通配符访问 JSON 对象
PHP using wildcard for accessing JSON object
我正在尝试访问特定密钥。这是我的对象:
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
)
)
)
在这种情况下,我希望输出键 addr
的值 192.168.0.1
。第一个键(ext-118-27-16-0-23
)改变了,我不知道他的值。
该模式应类似于 ext-*
所以我想我需要这样的东西:
$addr = {WILDCARD}[1]->addr;
以下是我认为您可以做的事情
$ipv4Addresses = array_map(function($ip) {
return $ip->addr;
}, array_filter(current((array) $obj), function($ip) {
return $ip->version === 4;
}));
这将 return 所有 IPv4 addr
属性的数组。
要点:
- 将对象转换为数组~
(array) $obj
- 使用
current()
提取第一个(仅)属性
- 使用
array_filter()
将地址数组减少到version
4
- 使用
array_map()
只提取addr
属性
您可能希望在最终数组上使用 array_values()
到 re-index 它来自 0
。
我正在尝试访问特定密钥。这是我的对象:
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
)
)
)
在这种情况下,我希望输出键 addr
的值 192.168.0.1
。第一个键(ext-118-27-16-0-23
)改变了,我不知道他的值。
该模式应类似于 ext-*
所以我想我需要这样的东西:
$addr = {WILDCARD}[1]->addr;
以下是我认为您可以做的事情
$ipv4Addresses = array_map(function($ip) {
return $ip->addr;
}, array_filter(current((array) $obj), function($ip) {
return $ip->version === 4;
}));
这将 return 所有 IPv4 addr
属性的数组。
要点:
- 将对象转换为数组~
(array) $obj
- 使用
current()
提取第一个(仅)属性 - 使用
array_filter()
将地址数组减少到version
4 - 使用
array_map()
只提取addr
属性
您可能希望在最终数组上使用 array_values()
到 re-index 它来自 0
。