从JSON Array php中提取特定值

时间:2015-03-27 10:55:46

标签: php arrays json

我有一个JSON数组

    [0] => Array
    (   
        [stage_id] => 80    
        [yieldVal] => Array
            (
                [0] => Array
                    (
                        [datajson] => [{"name":"doi","value":"215"},{"name":"dateofpollinationstops","value":"Date of Pollination Stops~23-3-2015"}]
                    )

                [1] => Array
                    (
                        [datajson] => [{"name":"doi","value":"698"},{"name":"dateofpollinationstops","value":"Date of Pollination Stops~23-3-2015"}]
                    )
            )
    )   

我需要从这个数组中提取值

    [0] => Array
    (   
        [stage_id] => 80    
        [yieldVal] => Array
            (
                [doi_value] => 215  
                [doi_value] => 698  
            )
    )   

我尝试过解码JSON。但无法继续下去。

$phpArray = json_decode($res['datajson'], true);

如何提取值并指定密钥。

编辑:我的最终输出应该是

[0] => Array
    (   
        [stage_id] => 80    
        [yieldVal] => 913  //215+698  -> Extracting values from [datajson]
    )

2 个答案:

答案 0 :(得分:1)

你应该能够通过以下方式获得价值:

$doi_value = $phpArray[0]['value'];

然后你可以将它们相加,将它们推送到结果数组或其他任何数据。

答案 1 :(得分:1)

可能会让你失望的一件事是你的datajson字符串是:

`[{"name":"doi","value":"215"},{"name":"dateofpollinationstops","value":"Date of Pollination Stops~23-3-2015"}]`

方括号表示json_decode将从对象创建一个数组。

无论如何,试试这个...应该给你你要求的确切输出:

$yieldVal = 0;

foreach ($res['yieldVal'] as $key => $arr) {

    $decode = json_decode($arr['datajson']);
    $yieldVal = $yieldVal + $decode[0]->value;

}

$newArray = array (

    'stage_id' => $res['stage_id'],
    'yieldVal' => $yieldVal

);

//var_dump($newArray);
echo "<pre>".print_r($newArray, true)."</pre>";