2010-11-19 6 views
1

lat와 lng 배열을 PHP 스크립트에 전달하려고합니다. 스크립트에서 .txt 파일로 저장할 수 있습니다.자바 스크립트에서 PHP로 배열을 전달하는 중 오류가 발생했습니다.

내 배열을 직렬화하고 PHP 스크립트로 전달할 수 있습니다 ... 그리고 PHP 쪽에서, 내가 그것을 unserialize 관리합니다. 그러나 파일에 배열을 쓸 때 파일은 "배열 배열 배열"로만 표시되고 값은 ... "(1.3567, 103.124252) (1.3543, 103.436435)"이됩니다.

아래는 내 샘플 코드입니다 (직렬화) :

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 및 파일에 붙여 넣기) : ALL 도와

$data = $_POST['y']; 

$arr = unserialize($data); 

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

감사를! : D

답변

4
  1. Reinvent wheels much? :) 명시 적으로이 목적을 위해 이미 JSON이 있으며 거의 ​​모든 언어로 JSON을 인코딩하고 해독 할 수있는 많은 라이브러리가 있습니다. PHP는 json_decode과 함께 제공됩니다.
  2. 파일에 쓸 때 $value 자체는 배열입니다. 배열이 문자열로 변환 될 때 (출력 할 때 필요함), it'll be cast to the string "Array". 배열의 모든 값을 쉼표로 구분하여 출력하려면 join(',', $value)을 사용하십시오.
+0

오 (','$ 값) 정말 도움 !! !! 감사합니다. :) – Dayzza

+0

@Jonathan BTW, JS가 실제로 JSON에서 인코딩되는 것으로 보입니다.하지만 PHP는 JSON을 이해할 수 없어야하는'unserialize'를 사용하여 비 직렬화 중입니다 ...?! – deceze

+0

hmmm 확실치 않습니다.하지만 unserialize를 사용하면 배열에서 값을 가져올 수 있습니다. – Dayzza

관련 문제