包含的PHP文件中的全局变量


global variables in included php file

我有一个网站。在这个网站上,我试图生成随机图像。当我把它与主页上的其他HTML混合在一起时,它的代码看起来很乱,所以我决定使用一个"include"调用来调用另一个带有我想要的php函数的页面。调用函数运行特定代码块的问题是,当它运行时,它不认识到我曾试图将一些全局变量放在顶部,因此当它输出一个数字时,没有一个,因为它从未有过一个。

有谁能告诉我如何解决这个问题,这样我就可以使用变量,使它们具有我想要的初始值?

<?php
$total1 = "4";
$start = "1";
$random1 = mt_rand($start, $total1);
$total2 = "3";
$random2 = mt_rand($start, $total2);
function randomImage1()
{
  $file_type = ".jpg";
  $image_folder = "Images/Picturebar";
  $image_name = $random1 . $file_type;
  echo ("<img src='"$image_folder/$image_name'" alt='"$image_name'" width='"204px'"     height='"100px'" />");
  echo("$random1");
}
function randomImage2()
{
  $file_type = ".jpg";
  $image_folder = "Images/Picturebar";
  if ($random2 == $random1) {
      $random2 = $random2 + 1;
  } 
  $image_name = $random2 . $file_type;
  echo "<img src='"$image_folder/$image_name'" alt='"$image_name'" width='"204px'"         height='"100px'" />"; 
  echo("$random2");
}
?>

您需要在函数内部全局引用变量,或者更好的是,将它们作为参数传递:

// pass $random1 as a parameter
function randomImage1($random1)
{
  $file_type = ".jpg";
  $image_folder = "Images/Picturebar";
  $image_name = $random1 . $file_type;
  echo ("<img src='"$image_folder/$image_name'" alt='"$image_name'" width='"204px'"     height='"100px'" />");
  echo("$random1");
}
// Pass $random2 as a parameter
function randomImage2($random2)
{
  $file_type = ".jpg";
  $image_folder = "Images/Picturebar";
  if ($random2 == $random1) {
      $random2 = $random2 + 1;
  } 
  $image_name = $random2 . $file_type;
  echo "<img src='"$image_folder/$image_name'" alt='"$image_name'" width='"204px'"         height='"100px'" />"; 
  echo("$random2");
}

这也可以在函数内部使用global关键字来完成,但首选像上面那样传递参数:

function randomImage1($random1)
{
  // Identify $random1 as the existing global
  global $random1;
  // Or use $GLOBALS['random1']
  $file_type = ".jpg";
  $image_folder = "Images/Picturebar";
  $image_name = $random1 . $file_type;
  echo ("<img src='"$image_folder/$image_name'" alt='"$image_name'" width='"204px'"     height='"100px'" />");
  echo("$random1");
}

您可以在包含的文件前面添加这一行:

global $total1, $start, $random1, $total2, $random2;

这将使以下变量成为全局变量,即使被包含在一个函数中

您必须将变量传递给函数或在函数中将它们声明为全局…我强烈建议把它们传给……

function randomImage1($random1)
{
  $file_type = ".jpg";
  $image_folder = "Images/Picturebar";
  $image_name = $random1 . $file_type;
  echo ("<img src='"$image_folder/$image_name'" alt='"$image_name'" width='"204px'"     height='"100px'" />");
  echo("$random1");
}

或:

function randomImage1()
{
  global $random1;
  $file_type = ".jpg";
  $image_folder = "Images/Picturebar";
  $image_name = $random1 . $file_type;
  echo ("<img src='"$image_folder/$image_name'" alt='"$image_name'" width='"204px'"     height='"100px'" />");
  echo("$random1");
}

我怀疑这里会有人告诉你声明全局变量。最好将它传递给函数

要使用在函数的命名空间之外声明的变量,请使用global关键字:

$var = 1;
function square()
{
    global $var; // import this variable
    return $var * $var;   
}

如果值不改变,使用define定义一个常量,如下所示:<?php define('START', '1') ?>

然后在你的代码中你可以这样调用它:$start = START

这只是一个例子,你可以直接使用START你不需要将它添加到另一个变量