首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问在其名称中具有特定值的某个数组

访问在其名称中具有特定值的某个数组
EN

Stack Overflow用户
提问于 2014-06-24 02:55:46
回答 2查看 60关注 0票数 1

我正在尝试制作一个html 数独游戏板,它根据php、$_GET['level']$_GET['puzzle']值加载不同的拼图。Php变量$get_level$get_puzzle被设置为$_GET值,因此它们可以在javascript中使用。

代码语言:javascript
复制
<?php
$default_level = 'medium';
$default_puzzle = 1;
$number_of_puzzles_per_level = 10;
if (isset($_GET['level']) && isset($_GET['puzzle'])) {
    if ($_GET['level'] == 'easy' || $_GET['level'] == 'medium' || $_GET['level'] == 'hard') {
        $get_level = $_GET['level'];
    } else {
        $get_level = $default_level;
    }
    if (is_int($_GET['puzzle'])) {
        if ($_GET['puzzle'] > 0 && $_GET['puzzle'] <= $number_of_puzzles_per_level) {
            $get_puzzle = $_GET['puzzle'];
        } else {
            $get_puzzle = $default_puzzle;
        }
    } else {
        $get_puzzle = $default_puzzle;
    }
} else {
    $get_level = $default_level;
    $get_puzzle = $default_puzzle;
}
?>

在javascript中,我有一组数组:

代码语言:javascript
复制
level_easy_puzzle_1 = [[0, 0, 0, 7, 0, 3, 0, 0, 0], [0, 2, 3, 5, 0, 0, 0, 0, 3], [0, 0, 0, 0, 4, 0, 0, 0, 9], [1, 0, 7, 0, 0, 0, 0, 4, 0], [0, 4, 0, 3, 0, 9, 0, 8, 0], [0, 8, 0, 0, 0, 0, 5, 0, 1], [7, 0, 0, 0, 6, 0, 0, 0, 0], [8, 0, 0, 0, 0, 1, 2, 5, 0], [0, 0, 0, 2, 0, 4, 0, 0, 0]];
//I will fill out the rest of the puzzles later
level_easy_puzzle_2 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_3 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_4 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_5 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_6 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_7 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_8 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_9 = [[], [], [], [], [], [], [], [], []];
level_easy_puzzle_10 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_1 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_2 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_3 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_4 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_5 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_6 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_7 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_8 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_9 = [[], [], [], [], [], [], [], [], []];
level_medium_puzzle_10 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_1 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_2 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_3 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_4 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_5 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_6 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_7 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_8 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_9 = [[], [], [], [], [], [], [], [], []];
level_hard_puzzle_10 = [[], [], [], [], [], [], [], [], []];

然后,根据下面变量puzzleget_puzzle的值,将javascript变量get_level设置为上面的益智数组之一。

代码语言:javascript
复制
var get_level = '<?php echo $get_level; ?>';
var get_puzzle = <?php echo $get_puzzle; ?>;

因此,如果get_level等于'hard'get_puzzle等于3,我希望变量puzzle等于数组level_hard_puzzle_3的内容。

代码语言:javascript
复制
//Here's what I have right now, but it only gives me the name of the array not the contents
var puzzle = 'level_'+get_level+'_puzzle_'+get_puzzle;

希望这是明确的我想要什么,并感谢任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-24 03:12:19

您可以将其组织成一个对象。另外,让数组索引处理您的编号,而不是将数字分配给变量名称。(如果您决定删除一个谜题,则必须重新命名它们。)

代码语言:javascript
复制
var puzzles = {
    easy: [
            [//Puzzle 0
              [0, 0, 0, 7, 0, 3, 0, 0, 0],
              [0, 2, 3, 5, 0, 0, 0, 0, 3],
              [0, 0, 0, 0, 4, 0, 0, 0, 9],
              [1, 0, 7, 0, 0, 0, 0, 4, 0],
              [0, 4, 0, 3, 0, 9, 0, 8, 0],
              [0, 8, 0, 0, 0, 0, 5, 0, 1],
              [7, 0, 0, 0, 6, 0, 0, 0, 0],
              [8, 0, 0, 0, 0, 1, 2, 5, 0],
              [0, 0, 0, 2, 0, 4, 0, 0, 0]
            ],
            [//Puzzle 1
              [0, 0, 0, 7, 0, 3, 0, 0, 0],
              [0, 2, 3, 5, 0, 0, 0, 0, 3],
              [0, 0, 0, 0, 4, 0, 0, 0, 9],
              [1, 0, 7, 0, 0, 0, 0, 4, 0],
              [0, 4, 0, 3, 0, 9, 0, 8, 0],
              [0, 8, 0, 0, 0, 0, 5, 0, 1],
              [7, 0, 0, 0, 6, 0, 0, 0, 0],
              [8, 0, 0, 0, 0, 1, 2, 5, 0],
              [0, 0, 0, 2, 0, 4, 0, 0, 0]
            ]
    ], //end of the easy puzzles
    medium: [], //...and so on...
    hard: [],
}

我建议创建一个函数来检索谜题,这样您就可以在一个地方灵活地控制您的逻辑:

代码语言:javascript
复制
function getPuzzle(difficulty, level){
    if(puzzles[difficulty] && puzzles[difficulty].length >= level -1){
        return puzzles[difficulty][level];
    }else{
        console.warn("That puzzle doesn't exist!");
        return;
    }
}

我们现在可以做一些类似var puzzle = getPuzzle('hard', 2)的事情,但是让我们在此基础上构建一个函数,得到一个随机的谜题。

代码语言:javascript
复制
function getRandomPuzzle(level) {
  return getPuzzle(level, Math.floor(Math.random() * (puzzles[level].length)));
}

var puzzle = getRandomPuzzle('hard');
票数 2
EN

Stack Overflow用户

发布于 2014-06-24 03:04:59

您可以使用eval Javascript函数。

var puzzle = eval('level_' + get_level + '_puzzle_' + get_puzzle);

这会给你带来你的谜题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24377651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档