Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(PHP)如何使用随机函数分配变量,并且只执行一次?每当我引用变量时,它都会不断变化_Php_Variables - Fatal编程技术网

(PHP)如何使用随机函数分配变量,并且只执行一次?每当我引用变量时,它都会不断变化

(PHP)如何使用随机函数分配变量,并且只执行一次?每当我引用变量时,它都会不断变化,php,variables,Php,Variables,我似乎遇到的问题是,每当我引用$j变量时,它都会切换,这是有意义的,因为它实际上被分配给了一个函数。我可能只是有一个程序员块,但是,我如何使它一次生成一个随机数,并将其分配给一个不会改变的变量 提前谢谢 global $wpdb; $j = rand(); $table_name = 'quiz'; if(isset($_POST["nextpage"]) && $_POST["nextpage"]!="") { $j = rand(); $nextpage

我似乎遇到的问题是,每当我引用$j变量时,它都会切换,这是有意义的,因为它实际上被分配给了一个函数。我可能只是有一个程序员块,但是,我如何使它一次生成一个随机数,并将其分配给一个不会改变的变量

提前谢谢

global $wpdb;

$j = rand();

$table_name = 'quiz';
if(isset($_POST["nextpage"]) && $_POST["nextpage"]!="") {

    $j = rand();
    $nextpage = mysql_real_escape_string($_POST["nextpage"]);

  switch ($nextpage) {
    case '2':
      $wpdb->insert($table_name, array('Q1score'=>$_POST[Q1],'Q2score'=>$_POST[Q2],'Q3score'=>$_POST[Q3],'ID'=>$j));

      $_SESSION['page'] = 2;

      break;
    case '3':
      $wpdb->update($table_name, array('Q4score'=>$_POST[Q4],'Q5score'=>$_POST[Q5],'Q6score'=>$_POST[Q6],'Q7score'=>$_POST[Q7]), array('ID'=>$j));
      $_SESSION['page'] = 3;
      break;

    case '4':
      $_SESSION['page'] = 4;

      break;
  }

} else {

  if (!isset($_SESSION["page"])) {
    $_SESSION["page"] = "1";
  } else {
    /* do nothing */
  }

}
使用
isset()
查看是否已在此范围内定义它

if ( !isset( $j ) ) $j = rand();
如果要在一个会话期间跨多个页面加载进行维护,请填充
$\u会话[]
变量

if ( !isset( $_SESSION['j'] ) ) $_SESSION['j'] = rand(); // expects session_start() to be called somewhere above
$j = $_SESSION['j'];
挑一个或另一个

global $wpdb;

if ( !isset( $_SESSION['j'] ) ) $_SESSION['j'] = rand(); // expects session_start() to be called somewhere above
$j = $_SESSION['j'];

$table_name = 'quiz';
if(isset($_POST["nextpage"]) && $_POST["nextpage"]!="") {

    /* $j = rand(); remove this assignment */
    $nextpage = mysql_real_escape_string($_POST["nextpage"]);

  switch ($nextpage) {
    case '2':
      $wpdb->insert($table_name, array('Q1score'=>$_POST[Q1],'Q2score'=>$_POST[Q2],'Q3score'=>$_POST[Q3],'ID'=>$j));

      $_SESSION['page'] = 2;

      break;
    case '3':
      $wpdb->update($table_name, array('Q4score'=>$_POST[Q4],'Q5score'=>$_POST[Q5],'Q6score'=>$_POST[Q6],'Q7score'=>$_POST[Q7]), array('ID'=>$j));
      $_SESSION['page'] = 3;
      break;

    case '4':
      $_SESSION['page'] = 4;

      break;
  }

} else {

  if (!isset($_SESSION["page"])) {
    $_SESSION["page"] = "1";
  } else {
    /* do nothing */
  }

}

在脚本的一次运行中“不会更改”,或者在多个请求中“不会更改”,一次?每个用户一次?一次什么?不会在一次脚本运行中更改。因此,每当我引用更新数据库时,我不希望那个随机数在我使用它作为数据库中的唯一ID时发生变化database@ZacharyToney将其放入会话中?与其随机发送上一个id,不如通过
POST
,它将帮助您进行查询和分页,并为您解决许多问题。我之所以这么说,是因为您在查询中使用了该随机数进行id匹配,就像这个建议一样。工作得很好。然而,有没有更好的方法让未来的程序员知道这一点?