PHP中是否可以永久更改数组的值?

时间:2015-08-05 18:57:02

标签: php

static $l1 = array(1,"_" , "_", "_");
static $l2 = array("_", 2, "_", "_");
static $l3 = array("_", "_", 2, "_");
static $l4 = array("_", "_", "_", "_");

static $c1 = array(1, 4, 3, 2);
static $c2 = array(3, 2, 4, 1);
static $c3 = array(4, 1, 2, 3);
static $c4 = array(2, 3, 1, 4);

我基本上是想制作2x2数独游戏。我有一个来自l1和l4的数组列表,用于猜测,另一个用c1到c4作为答案。用户将输入值,行号和列号,如果所有参数都正确(在与答案集c1到c4比较后),则应根据输入更改l1,l2,l3或l4中的值。问题是PHP不存储类似的数组信息,有没有出路?我想让这个程序尽可能简单。

if ($_POST['n2'] == 1) {
    if ($_POST['n1'] == $c1[$_POST['n3']-1]) {
        $l1[$_POST['n3']-1] = $_POST['n1'];
    } else {
        echo "Try again";
    }
}

2 个答案:

答案 0 :(得分:0)

您可以在会话或数据库中保存播放器的操作。这取决于你想要什么。 要求你尝试的方式不会让它变得动态。

看一看 PHP SessionsPHP MySQL API

答案 1 :(得分:0)

如果您不想使用某种持久性存储,则需要跟踪每个请求中的所有数据。这意味着将解决方案以及最终解决方案发送到浏览器并每次都返回到脚本。

使用POST

<?php
$rowNumber = $_POST['rowNubmer'];
$columnNumber = $_POST['columnNumer'];
$guessedValue = $_POST['guessedValue'];
$codedSolutionSoFar = $_POST['solutionSoFar'];
$solutionSoFar = myDecodeFunction($codedSolitionSoFar);

$codedFinalSolution = $_POST['finalSolution'];
$finalSolution = myDecodeFunction($codedSolitionSoFar);

function myDecodeFunction($codedString) {
  $decoded = explode(',', $codedString);
  return $decoded;
}

function myEncodeFunction(array $sudokuGameValues) {
  $encoded = implode(',', $sodukoGameValues);
  return $encoded;
}

function checkGuessedValue($row, $column, $value, $solution) {
  // this is hardcoded for a 2x2 sudoku where the values are stored in
  // a flat array as [(0,0), (0,1), (1,0), (1,1)]
  $indexInSolition = $row * 2 + $column;
  $correctValue = $solution[$indexInSolution];
  return $value === $correctValue;
}
...
sprintf(
   '<input type="hidden" name="finalSolution" value="%s">',
    myEncodeFunction($finalSolution)
);
sprintf(
   '<input type="hidden" name="solitionSoFar" value="%s">',
    myEncodeFunction($solutionSoFar)
);

请注意,上述内容并不完整,完整且完全忽略了输入过滤,这是一种不好的做法,并且作为一种解决方案可以作为一种解决方案。但是因为它是一个类,它可能是可用的。从那里你可以解释像这样的代码带来的所有错误和问题。但是每个人都会喜欢能够在HTML源代码中查找解决方案的想法,这给出了引入服务器端存储所需的参数,例如:正如会议中已经建议的那样。