加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用ajax和php将文本文件转换为2d javascript数组

发布时间:2020-12-16 02:47:31 所属栏目:百科 来源:网络整理
导读:所以,我正在使用 Javascript构建一个基于浏览器的RPG.最初,我的关卡有一层,是从一个javascript 2d地图数组加载的.但是,我正在更改我的代码以允许支持从文件加载的多个图层. 我可以在没有太多问题的情况下检索文件数据,但是,我不知道如何将信息解析为可用的数
所以,我正在使用 Javascript构建一个基于浏览器的RPG.最初,我的关卡有一层,是从一个javascript 2d地图数组加载的.但是,我正在更改我的代码以允许支持从文件加载的多个图层.

我可以在没有太多问题的情况下检索文件数据,但是,我不知道如何将信息解析为可用的数组.

我的文本文件的内容如下;

LAYER
0,0
0,0
LAYER
0,0

我的Ajax和PHP用于检索级别;

// JAVASCRIPT
    $.ajax({
            type: 'POST',url: 'lib/ajax.php',data: {method: 'getLevel'},success: function(data){

            },error: function(x,h,r){
                console.log(x,r);
            }
        })

// PHP FILE 2

public function getLevel(){
   $file = file_get_contents('../levels/level1.txt');
   echo $file;
}

有一个中间文件处理我的所有ajax请求,并将它们传递给函数类.

我可以将我的关卡数据设置得很好,我只是不知道一旦有了它就该怎么做.

我知道我可以通过在每个组的末尾添加换行符并以这种方式解析它来实现这一点.但是,在将来实施磁贴编辑器时,这将成为一场噩梦.你们有什么建议怎么办吗?你会建议在php或javascript级别解析,还是两者兼而有之?

解决方法

如果您的数据遵循此布局

LAYER
0,0
LAYER2
0,0

你可以这样做

function parseLayer($text){
    $layers = array();
    $lines = explode("n",$text);
    $lastLayer;

    $currArray = array();

    foreach($lines as $line){
        if(strpos($line,",") === false){
            if(!empty($lastLayer)){
                $layers[$lastLayer] = $currArray;
                $currArray = array();
            }
            $lastLayer = trim($line);
        }else{
            $nodes = explode(",$line);
            $nodeList = array();
            foreach($nodes as $node){
                $nodeList[] = trim($node);
            }
            $currArray[] = $nodeList;
        }
        $layers[$lastLayer] = $currArray;
    }
    return $layers;
}

然后将其传递给Javascript,您可以使用JSON for php json_encode

由于@Mike在他的手机上,这里有代码:

{"LAYER":[
    [0,0],[0,0]
],"LAYER2":[
    [0,0]
]
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读