从JSON数组php中提取特定值


Extract specific values from JSON Array php

我有一个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]
    )

有一件事可能会让你绊倒,那就是你的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>";

您应该能够使用获取值

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

然后,您可以对它们求和,将它们推到结果数组中,或者其他什么。