I have an array of json objects stored in database which are actually settings for Revolution slider. The string retrieved from database table and assigned to php variable look like this:
$json = '[
{"sliderType": "standard","options": ["standard","carousel","hero"]},
{"sliderLayout": "auto","options": ["auto","fullwidth","fullscreen"]},
{"responsiveLevels": 4096},
{"gridwidth": 1200},
{"gridheight": 700},
{"autoHeight": "off","options": ["on","off"]},
{"minHeight": 0},
{"fullScreenOffsetContainer": ""},
{"fullScreenOffset": "0"},
{"delay": 9000},
{"waitForInit": false,"options": [true,false]},
{"disableProgressBar": "off","options": ["on","off"]},
{"startDelay": 0},
{"stopAfterLoops": -1},
{"stopAtSlide": -1},
{"viewPort": [
{"enable": false,"options": [true,false]},
{"outof": "wait","options": ["wait","pause"]},
{"visible_area": "60%"}
]
},
{"lazyType": "smart","options": ["full","smart","single","none"]},
{"dottedOverlay": "none","options": ["none","twoxtwo","threexthree","twoxtwowhite","threexthreewhite"]},
{"shadow": 0,"options": [0,1,2,3,4,5,6]},
{"spinner": "spinner0","options": ["off", "spinner0", "spinner1","spinner2", "spinner3", "spinner4", "spinner5"]},
{"debugMode": false,"options": [true,false]},
{"extensions": "extensions/"},
{"extensions_suffix": ".min.js"},
{"fallbacks": [
{"panZoomDisableOnMobile": "off","options": ["on","off"]},
{"nextSlideOnWindowFocus": "off","options": ["on","off"]},
{"disableFocusListener": true,"options": [true,false]}
]
},
{"parallax": [
{"type": "off","options": ["off","mouse","scroll","mouse+scroll"]},
{"levels": [10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85]},
{"origo": "enterpoint","options": ["slidercenter","enterpoint"]},
{"speed": 400},
{"bgparallax": "on","options": ["on","off"]},
{"disable_onmobile": "off","options": ["on","off"]}
]
},
{"carousel": [
{"horizontal_align": "center","options": ["left","right","center"]},
{"vertical_align": "center","options": ["top","bottom","center"]},
{"infinity": "on","options": ["on","off"]},
{"space": 0},
{"maxVisibleItems": 3},
{"stretch": "off","options": ["on","off"]},
{"fadeout": "off","options": ["on","off"]},
{"maxRotation": 0},
{"minScale": 0},
{"vary_fade": "off","options": ["on","off"]},
{"vary_rotation": "on","options": ["on","off"]},
{"vary_scale": "off","options": ["on","off"]},
{"border_radius": "0px"},
{"padding_top": 0},
{"padding_bottom": 0}
]
},
{"navigation": [
{"keyboardNavigation": "on", "options": ["on","off"]},
{"keyboard_direction": "horizontal", "options": ["horizontal","vertical"]},
{"mouseScrollNavigation": "off", "options": ["on","off"]},
{"onHoverStop": "on", "options": ["on","off"]},
{"touch": [
{"touchenabled": "on", "options": ["on", "off"]},
{"swipe_treshold": 75},
{"swipe_min_touches": 1},
{"drag_block_vertical": false, "options": [true, false]},
{"swipe_direction": "horizontal", "options": ["horizontal","vertical"]}
]
},
{"arrows": [
{"style": ""},
{"enable": false, "options": [true, false]},
{"rtl": false, "options": [true, false]},
{"hide_onmobile": false, "options": [true, false]},
{"hide_onleave": true, "options": [true, false]},
{"hide_delay": 200},
{"hide_delay_mobile": 1200},
{"hide_under": 0},
{"hide_over": 9999},
{"tmp": ""},
{"left": [
{"container": "slider", "options": ["slider","layergrid"]},
{"h_align": "left", "options": ["left","center","right"]},
{"v_align": "center", "otpions": ["top","center","bottom"]},
{"h_offset": 20},
{"v_offset": 0}
]
},
{"right": [
{"container": "slider", "options": ["slider","layergrid"]},
{"h_align": "left", "options": ["left","center","right"]},
{"v_align": "center", "otpions": ["top","center","bottom"]},
{"h_offset": 20},
{"v_offset": 0}
]
}
]
},
{"bullets": [
{"style": ""},
{"enable": false, "options": [true, false]},
{"rtl": false, "options": [true, false]},
{"container": "slider", "options": ["slider","layergrid"]},
{"hide_onmobile": false, "options": [true, false]},
{"hide_onleave": true, "options": [true, false]},
{"hide_delay": 200},
{"hide_delay_mobile": 1200},
{"hide_under": 0},
{"hide_over": 9999},
{"tmp": "<span class=\"tp-bullet-image\"></span><span class=\"tp-bullet-title\"></span>"},
{"direction": "horizontal", "options": ["horizontal","vertical"]},
{"space": 0},
{"h_align": "left", "options": ["left","center","right"]},
{"v_align": "center", "otpions": ["top","center","bottom"]},
{"h_offset": 20},
{"v_offset": 0}
]
},
{"thumbnails": [
{"style": ""},
{"enable": false, "options": [true, false]},
{"rtl": false, "options": [true, false]},
{"container": "slider", "options": ["slider","layergrid"]},
{"width": 100},
{"height": 50},
{"wrapper_padding": 2},
{"wrapper_opacity": 1},
{"wrapper_color": "#f5f5f5"},
{"visibleAmount": 5},
{"hide_onmobile": false, "options": [true, false]},
{"hide_onleave": true, "options": [true, false]},
{"hide_delay": 200},
{"hide_delay_mobile": 1200},
{"hide_under": 0},
{"hide_over": 9999},
{"tmp": "<span class=\"tp-thumb-image\"></span><span class=\"tp-thumb-title\"></span>"},
{"direction": "horizontal", "options": ["horizontal","vertical"]},
{"span": false, "options": [true, false]},
{"position": "inner", "options": ["inner","outer-left","outer-right","outer-bottom","outer-top"]},
{"space": 0},
{"h_align": "left", "options": ["left","center","right"]},
{"v_align": "center", "otpions": ["top","center","bottom"]},
{"h_offset": 20},
{"v_offset": 0}
]
},
{"tabs": [
{"style": ""},
{"enable": false, "options": [true, false]},
{"rtl": false, "options": [true, false]},
{"container": "slider", "options": ["slider","layergrid"]},
{"width": 100},
{"height": 50},
{"wrapper_padding": 2},
{"wrapper_opacity": 1},
{"wrapper_color": "#f5f5f5"},
{"visibleAmount": 5},
{"hide_onmobile": false, "options": [true, false]},
{"hide_onleave": true, "options": [true, false]},
{"hide_delay": 200},
{"hide_delay_mobile": 1200},
{"hide_under": 0},
{"hide_over": 9999},
{"tmp": "<span class=\"tp-thumb-image\"></span><span class=\"tp-thumb-title\"></span>"},
{"direction": "horizontal", "options": ["horizontal","vertical"]},
{"span": false, "options": [true, false]},
{"position": "inner", "options": ["inner","outer-left","outer-right","outer-bottom","outer-top"]},
{"space": 0},
{"h_align": "left", "options": ["left","center","right"]},
{"v_align": "center", "otpions": ["top","center","bottom"]},
{"h_offset": 20},
{"v_offset": 0}
]
}
]
}
]';
I can convert it to array of stdClass objects or array, whatever is needed. I have rendered page with all of those objects and used X-editable for changing values if needed. So when x-editable plugin sends new value for single object the values look like :
$_POST['name'] = 'navigation-arrows-left-container';
$_POST['value'] = 'customscontainer';
$_POST['pk'] = 1;
again I am able to build a json object string from these values:
$levels = explode('-', $_POST['name']);
$levels = array_reverse($levels);
$newjson = '';
foreach($levels AS $level){
if($newjson == ''){
$newjson = '"'.$level.'":"'.$_POST['value'].'"';
}else{
$newjson = '"'.$level.'":[{'.$newjson.'}]';
}
}
$newjson = '[{'.$newjson.'}]';
and convert it to stdClass object or regular array. But I don't know how to test if new value is same as default value since the indexes are different. What I need is a function that will check if value for changed key is different as value in default object, if is different then return true if is same as default then return false.
json_encode()to turn an array into json instead of making your own? Seems like you are leaving room for error sincejson_encode()will convert line returns and such which you are not doing..