php http_build_query tarafından iç içe diziler kullanarak () ve flash AS3 bunları tarifesi

2 Cevap php

i am having this hard time figuring what is needed to do, i am using URLVariables to send/recieve values between flash and PHP

Sorun i iç içe diziler flaşlı (bir dizi içinde dizi) erişemiyor olduğunu

heres bir örnek:

$dgresult = array("total" => $results); echo http_build_query($dgresult,"flf_");

in flash, all i need to do is to use: var variables:URLVariables = new URLVariables(e.target.data);

then i can access it with : variables.total

Sorun şimdi ben diziler yuvalanmış durumdur:

$dgresult = array("total" => $results); array_push($dgresult,$another_array); http_build_query($dgresult,"flf_");

ben hala variables.total erişebilirsiniz

but what about anything that has flf_ ? how is that possible?

2 Cevap

Eğer sadece bu JSON gibi karmaşık veri için kurulan biçimlerini kullanmayı denemelisiniz. PHP için bakınız here ve AS3 See için here. Ya da hazır böyle AMFPHP olarak çözümler.

greetz
back2dos

ya da sadece nesneyi ayrıştırmak

var url:String = 'http://localhost/dump.php';
var params:Object = {
    test: 'ok',
    nested_1: {
        nested_2: {
            nested_3: {
                nested_4: {
                    hello: 'mf',
                    str: '~!@#$%^&*()_+'
                }
            }
        }
    },
};

var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();

parameters = fixParameters(parameters || {});

for (var key:String in parameters) {
    variables[key] = parameters[key];
}

request.data = variables;

var loader:URLLoader = new URLLoader();
loader.load(request);

ve burada fixParameters bir yöntemdir

private function fixParameters(data:Object, parameters:Object = null, prefixes:Array = null):Object {
    var setPrefix:Array;
    var prefixKey:String;

    if (!parameters) {
        parameters = {};
    }

    if (!prefixes) {
        prefixes = [];
    }

    for (var key:String in data) {
        setPrefix = prefixes.concat([key]);

        if (typeof(data[key]) == 'object') {
            parameters = fixParameters(data[key], parameters, setPrefix);
        } else {
            prefixKey = '';
            for (var i:Number = 0; i < setPrefix.length; i++) {
                prefixKey += i == 0 ? setPrefix[i] :  '[' + setPrefix[i] + ']';
            }
            parameters[prefixKey] = data[key];
        }
    }

    return parameters;
}