<?php

// from http://p...content-available-to-author-only...p.net/manual/de/function.ksort.php#109398
function array_reorder_keys($array, $keynames){
    if(empty($array) || !is_array($array) || empty($keynames)) return;
    if(!is_array($keynames)) $keynames = explode(',',$keynames);
    if(!empty($keynames)) $keynames = array_reverse($keynames);
    foreach($keynames as $n){
        if(array_key_exists($n, $array)){
            $newarray = array($n=>$array[$n]); //copy the node before unsetting
            unset($array[$n]); //remove the node
            $array = $newarray + array_filter($array); //combine copy with filtered array
        }
    }
    return $array;
}

function get_json_sorted($object, $array) {
    return json_encode(array_reorder_keys(get_object_vars($object), $array));
}

    $obj = new stdClass();
    $obj->name = 'John';
    $obj->age = 26;
    $obj->id = 3645;
    
var_dump(get_json_sorted($obj, array('id', 'name', 'age')));