PHP-функция: serializeСписок php-функций

javascript:

function serialize( mixed_val ) {    // Генерирует пригодное для хранения представление переменной
    // 
    // +   original by: Ates Goral (http://magnetiq.com)
    // +   adapted for IE: Ilia Kantor (http://javascript.ru)
 
    switch (typeof(mixed_val)){
        case "number":
            if (isNaN(mixed_val) || !isFinite(mixed_val)){
                return false;
            } else{
                return (Math.floor(mixed_val) == mixed_val ? "i" : "d") + ":" + mixed_val + ";";
            }
        case "string":
            return "s:" + mixed_val.length + ":\"" + mixed_val + "\";";
        case "boolean":
            return "b:" + (mixed_val ? "1" : "0") + ";";
        case "object":
            if (mixed_val == null) {
                return "N;";
            } else if (mixed_val instanceof Array) {
                var idxobj = { idx: -1 };
		var map = []
		for(var i=0; i<mixed_val.length;i++) {
			idxobj.idx++;
                        var ser = serialize(mixed_val[i]);
 
			if (ser) {
                        	map.push(serialize(idxobj.idx) + ser)
			}
		}                                       

                return "a:" + mixed_val.length + ":{" + map.join("") + "}"

            }
            else {
                var class_name = get_class(mixed_val);
 
                if (class_name == undefined){
                    return false;
                }
 
                var props = new Array();
                for (var prop in mixed_val) {
                    var ser = serialize(mixed_val[prop]);
 
                    if (ser) {
                        props.push(serialize(prop) + ser);
                    }
                }
                return "O:" + class_name.length + ":\"" + class_name + "\":" + props.length + ":{" + props.join("") + "}";
            }
        case "undefined":
            return "N;";
    }
 
    return false;
}

//Примеры:

   serialize(['Kevin', 'van', 'Zonneveld']);
// 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'

   serialize(3.14);
// 'd:3.14;'

   serialize("foo");
// 's:3:"foo";'

   serialize(true);
// 'b:1;'

   serialize(new Object());
// 'O:6:"Object":0:{}'

   serialize(new (function MyClass() {}));
// 'O:7:"MyClass":0:{}'

   serialize(new (function MyClass() { this.prop = 42 }));
// 'O:7:"MyClass":1:{s:4:"prop";i:42;}'

   serialize(new Array());
// 'a:0:{}'

   serialize([1, 3]);
// 'a:2:{i:0;i:1;i:1;i:3;}'

   serialize(undefined);
// 'N;'

   serialize(null);
// 'N;'

   serialize(NaN);
// false;

   serialize(Infinity);
// false;

   serialize(Array);
// false;

   serialize(function doit() {});
// false;

   serialize(/./);
// false;