从Json2

时间:2017-06-05 05:49:58

标签: php json

我是非常非常新的PHP ..实际上我来自java域。但是,我必须在php中进行一些集成工作。我的情况是,我有一个json数组,它有4个键,例如:

 one json --> {"id":7,"active":1,"blogId":"abc","blog_heading":"xyz"}.

我将从管理员面板中获取另一个JSON。例如,如果我更新了任何密钥,只有那个密钥将出现在

 second JSON --> for ex: {"blog_heading":"def"}

现在,我必须将第二个json的值替换为第一个json。上面场景的示例输出,比如我对php非常新。实际上我来自java域。但是,我必须在php中进行一些集成工作。我的情况是,我有一个json数组,它有4个键,例如:

  output json --> {"id":7,"active":1,"blogId":"abc","blog_heading":"def"}.

所以我在尝试如下,

$id = json_decode($data_string);
$id2 = json_encode($post);
$id5 = json_decode($id2);
$id6 = array();
foreach ($id as $key => $value) 
{

    $log->debug($key . ': ' . $value);
    if (array_key_exists($key, $id5->data)) {
        $log->debug($key . 'element is in the array');
        $log->debug($value . 'element is in the array');
        //array_push($id5, "apple", "raspberry");

        $id3 = array($key  => $value);
        $id3[$key] = $value;
        $log->debug($id3);

    }else{
        $log->debug($key . 'element is not in the array');
    }

}
$id7 = json_encode($id2);
$log->debug($id7);

id5数据是:$ id5

  DEBUG - 2017-06-05T02:26:20-04:00 - stdClass Object
   (
[meta] => stdClass Object
    (
        [table] => story
        [type] => item
    )

[data] => stdClass Object
    (
        [id] => 7
        [active] => 1
        [blogId] => abc
        [blog_heading] => xyz

    )

    )


 ==================

$ id的日志:

stdClass Object
   (
[active] => 1
[blog_heading] => def
[id] => 7
 )

请建议我如何实现这一点......我在这里做错了什么

3 个答案:

答案 0 :(得分:1)

请尝试:

$j1 = '{"id":7,"active":1,"blogId":"abc","blog_heading":"xyz"}';
$j2 = '{"blog_heading":"def"}';

$result = json_encode(
    array_merge(
        json_decode($j1, true),
        json_decode($j2, true)
   )
);

答案 1 :(得分:0)

<?php
$json1='{"id":7,"active":1,"blogId":"abc","blog_heading":"xyz"}';
$json2='{"blog_heading":"def"}';

$json1=json_decode($json1);
$json2=json_decode($json2);
foreach ($json1 as $key => $value) {
    if($json2->$key){
        $json1->$key=$json2->$key;
    }
}

$json1=json_encode($json1);
$json2=json_encode($json2);

答案 2 :(得分:0)

如果数组中只有一个元素,请执行此操作

$a = json_decode('{"id":7,"active":1,"blogId":"abc","blog_heading":"xyz"}',true);
$b = json_decode('{"blog_heading":"def"}',true);
$a['blog_heading'] = $b['blog_heading'];   
print_r($a);

如果您有多个这样的元素:

$c = json_decode('[{"id":7,"active":1,"blogId":"abc","blog_heading":"xyz"},
{"id":8,"active":1,"blogId":"abc","blog_heading":"xyz"}]',true);
$d = json_decode('[{"blog_heading":"def"},{"blog_heading":"hello"}]',true);
$return = array();
for ($i=0; $i < count($c); $i++) {
    $c[$i]['blog_heading'] = $d[$i]['blog_heading'];
    $return[] = $c[$i];
}
print_r($return);

如果您想要按特定ID替换值

$c = json_decode('[{"id":7,"active":1,"blogId":"abc","blog_heading":"xyz"},
{"id":8,"active":1,"blogId":"abc","blog_heading":"xyz"}]',true);
$d = json_decode('[{"id":7,"blog_heading":"def"},{"id":9,"blog_heading":"hello"}]',true);
$return = array();

for ($i=0; $i < count($c); $i++) {
    if($d[$i]['id'] == $c[$i]['id']) {
        $c[$i]['blog_heading'] = $d[$i]['blog_heading'];
    }
    $return[] = $c[$i];
}
print_r($return);

检查动态键值对:

$c = json_decode('[{"id":7,"active":1,"blogId":"abc","blog_heading":"xyz"},
{"id":8,"active":1,"blogId":"abc","blog_heading":"xyz"}]',true);
$d = json_decode('[{"id":6,"blog_heading":"def"},{"id":9,"blog_heading":"hello"}]',true);

$return = array();
for ($i=0; $i < count($c); $i++) {
    $result = array_intersect_key($c[$i], $d[$i]);
    foreach ($result as $key => $value) {
        $c[$i][$key] = $d[$i][$key];
    }
    $return[] = $c[$i];
}
print_r($return);

Check demo here