簡體   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