开发者

Error in Passing array from javascript to PHP

I am trying to pass my array of lat and lng to my PHP script so that the script can save it to an .txt file.

i manage to serialize my array and pass it to the php script... and on the php side, i manage to unserialize it. However, when i write the array to the file, the file only show as "array array array" ... and not the value... suppose to be "(1.3567, 103.124252) (1.3543, 103.436435)".

Below is my sample code (to serialize):

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:" + (mi开发者_C百科xed_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 (to unserialize and paste to file):

$data = $_POST['y'];

$arr = unserialize($data); 

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

THANKS FOR ALL YOUR HELP! :D


  1. Reinvent wheels much? :) There's already JSON for expressly this purpose, and there are a ton of libraries out there for en- and decoding JSON in just about any language. PHP comes with json_decode.
  2. When writing to the file, $value itself is an array. When an array is cast to a string (as is necessary for outputting it), it'll be cast to the string "Array". Use join(',', $value) to output all values of the array separated by commas.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜