繁体   English   中英

如何从JSON PHP获取数字键值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM