[英]how to get number key value from json php
我想要json数据中的key_value,但不使用循环
$y = "2018";
$json = '[
{"2017":[{"p":"50","v":"55"}]},
{"2018":[{"p":"50","v":"55"}]}
]';
$obj = json_decode($json, true);
if(array_key_exists($y, $obj)){
return $json[$y];
} else {
return array_search($y, $obj);
}
仅返回数字1
我想这是您的预期答案
$y = "2018";
$json = '[
{"2017":[{"p":"50","v":"55"}]},
{"2018":[{"p":"50","v":"55"}]}
]';
$obj = json_decode($json, true);
return array_column($obj,$y);
这将返回如下数组:
Array
(
[0] => Array
(
[0] => Array
(
[p] => 50
[v] => 55
)
)
)
由于解码时您的json字符串如下所示:
Array
(
[0] => Array
(
[2017] => Array
(
[0] => Array
(
[p] => 50
[v] => 55
)
)
)
[1] => Array
(
[2018] => Array
(
[0] => Array
(
[p] => 50
[v] => 55
)
)
)
)
array_key_exists
查找给定键是否存在于给定数组中。 array_search
查找给定值是否出现在给定数组中。
这些功能无法查看多维数组。 您应该遍历数组,然后执行array_key_exists
和/或array_search
函数。
好的,所以我尝试不使用循环就完成它,这可能就是您想要的,也可能不是。
$y = "2018";
$json = '[
{"2017":[{"p":"50","v":"55"}]},
{"2018":[{"p":"50","v":"55"}]}
]';
$obj = json_decode($json, true);
function exists( $key, $value, $y )
{
global $result;
if( isset( $key[ $y ] ) )
{
$result = $key[ $y ];
}
}
array_walk( $obj, "exists", $y );
var_dump( $result );
结果:
array(1) {
[0]=>
array(2) {
["p"]=>
string(2) "50"
["v"]=>
string(2) "55"
}
}
$num = array_walk($json, function($a) use ($i) {
$y = "2018";
if(isset($a[$y])){
return $i;
}
$i++;
});
返回1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.