解决方案 »

  1.   

    这个需要用正则么,array_keys 不是可以返回key名么?
      

  2.   

    $json_string = '
    [
    {
    "code": "AF",
    "value": 53,
    "name": "Afghanistan"
    },
    {
    "code": "AL",
    "value": 117,
    "name": "Albania"
    },
    {
    "code": "DZ",
    "value": 15,
    "name": "Algeria"
    },
    {
    "code": "AD",
    "value": 181,
    "name": "Andorra"
    },
    {
    "code": "AO",
    "value": 15,
    "name": "Angola"
    }
    ] ';
    $json_string = preg_replace('/(?<="value": )\d+/', '0', $json_string);
    $result_array['Albania'] = 246;
    foreach($result_array as $k=>$v) {
      $json_string = preg_replace('/("value":) 0(,\s+"name": "'.$k.'")/s', "$1 {$v}$2", $json_string);
    }
    echo $json_string;[
    {
    "code": "AF",
    "value": 0,
    "name": "Afghanistan"
    },
    {
    "code": "AL",
    "value": 246,
    "name": "Albania"
    },
    {
    "code": "DZ",
    "value": 0,
    "name": "Algeria"
    },
    {
    "code": "AD",
    "value": 0,
    "name": "Andorra"
    },
    {
    "code": "AO",
    "value": 0,
    "name": "Angola"
    }

      

  3.   


    不懂你的意思。最终目的是把$json_string中“value”:后面的数字改为$result_array中对应的value,如果$result_array中的$key在$json_string存在的话。你确定array_keys就可以达到上述目的?
      

  4.   

    xun版主出手,还有什么话说啊,我学习学习先。回头结贴。
      

  5.   

    xuzuning出手,谁与争锋!版主的代码完全正确,结贴。
      

  6.   


    不懂你的意思。最终目的是把$json_string中“value”:后面的数字改为$result_array中对应的value,如果$result_array中的$key在$json_string存在的话。你确定array_keys就可以达到上述目的?1、使用array_keys($result_array)返回keys的数组,命名为key_array。
    2、遍历$json_string,key_array中查找name名。
    3、如果查到,改变$json_string value值。