繁体   English   中英

包含的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");
}
?>

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

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,而不必将其添加到另一个变量中。

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

// 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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM