簡體   English   中英

使用ajax和php將文本文件轉換為2d javascript數組

[英]Convert text file in to 2d javascript array using ajax & php

所以,我正在使用Javascript構建一個基於瀏覽器的RPG。 最初,我的關卡有一層,是從一個javascript 2d地圖數組加載的。 但是,我正在更改我的代碼以允許支持從文件加載的多個圖層。

我可以在沒有太多問題的情況下檢索文件數據,但是,我不知道如何將信息解析為可用的數組。

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

LAYER
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
LAYER
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 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, h, r);
            }
        })

// PHP FILE 2

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

有一個中間文件處理我的所有ajax請求,並將它們傳遞給函數類。

我可以將我的關卡數據設置得很好,我只是不知道一旦有了它就該怎么做。

我知道我可以通過在每個組的末尾添加換行符並以這種方式解析它來實現這一點。 但是,在將來實施磁貼編輯器時,這將成為一場噩夢。 你們有什么建議怎么辦嗎? 你會建議在php或javascript級別解析,還是兩者兼而有之?

如果您的數據遵循此布局

LAYER
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
LAYER2
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 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, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0]
],
"LAYER2":[
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0]
]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM