2010-11-19 14 views
1

Komut dizisinin bir .txt dosyasına kaydedebilmesi için, PHP betiğime lat ve lng dizimi iletmeye çalışıyorum.Dizide javascript'ten PHP'ye geçme hatası

Dizimi serileştirmeyi ve php betiğine aktarmayı başarabiliyorum ... ve php tarafında, onu sıraya almayı başaramıyorum. Bununla birlikte, diziyi dosyaya yazdığımda, dosya sadece "dizi dizi dizisi" olarak gösterilir ... ve "(1.3567, 103.124252) (1.3543, 103.436435)" değerini varsaymaz.

Aşağıda benim örnek kod (seri hale getirmek için):

function serialize(mixed_value) 
    { 
    var _getType = function(inp) { 
    var type = typeof inp, match; 
    var key; 
    if (type == 'object' && !inp) { 
    return 'null'; 
    } 
    if (type == "object") { 
    if (!inp.constructor) { 
     return 'object'; 
    } 
    var cons = inp.constructor.toString(); 
    match = cons.match(/(\w+)\(/); 
    if (match) { 
     cons = match[1].toLowerCase(); 
    } 
    var types = ["boolean", "number", "string", "array"]; 
    for (key in types) { 
     if (cons == types[key]) { 
     type = types[key]; 
     break; 
     } 
    } 
    } 
    return type; 
    }; 
    var type = _getType(mixed_value); 
    var val, ktype = ''; 

    switch (type) { 
    case "function": 
    val = ""; 
    break; 
    case "undefined": 
    val = "N"; 
    break; 
    case "boolean": 
    val = "b:" + (mixed_value ? "1" : "0"); 
    break; 
    case "number": 
    val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value; 
    break; 
    case "string": 
    val = "s:" + mixed_value.length + ":\"" + mixed_value + "\""; 
    break; 
    case "array": 
    case "object": 
    val = "a"; 
    var count = 0; 
    var vals = ""; 
    var okey; 
    var key; 
    for (key in mixed_value) { 
     ktype = _getType(mixed_value[key]); 
     if (ktype == "function") { 
     continue; 
     } 

     okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key); 
     vals += serialize(okey) + 
     serialize(mixed_value[key]); 
     count++; 
    } 
    val += ":" + count + ":{" + vals + "}"; 
    break; 
    } 
    if (type != "object" && type != "array") { 
    val += ";"; 
    } 
    return val; 
    } 

PHP unserialize (ve dosyaya yapıştırmak): TÜM YARDIM İÇİN

$data = $_POST['y']; 

$arr = unserialize($data); 

$fp=fopen("route.txt","w+"); 
foreach($arr as $key => $value){ 
fwrite($fp,$value."\t"); 
} 

TEŞEKKÜRLER! : D

cevap

4
  1. Tekerlekleri çok fazla yeniden iter misiniz? :) Bu amaç için zaten JSON var, ve hemen hemen herhangi bir dilde JSON kodunu çözmek ve çözmek için orada bir ton kütüphane var. PHP json_decode ile gelir.
  2. Dosyaya yazarken, $value kendisinin bir dizisidir. Bir dizi bir dizgiye verildiğinde (çıktı almak için gerekli olduğu gibi), it'll be cast to the string "Array". Virgülle ayrılmış dizinin tüm değerlerini çıkarmak için join(',', $value) kullanın.
+0

oh join (',' $ value) gerçekten yardımcı olur! .. Teşekkürler çok !! :) – Dayzza

+0

@Jonathan BTW, JS'nizin aslında JSON'da kodlandığı anlaşılıyor, ancak PHP, JSON'u anlayabilmemeli olan 'unserialize' kullanarak ... – deceze

+0

hmmm hakkında emin değilim .. ama diziden değer elde etmek için unserialize kullanarak yönetmek. – Dayzza