【问题标题】:Passing PHP variables through functions?通过函数传递 PHP 变量?
【发布时间】:2012-04-20 11:20:41
【问题描述】:

我在尝试通过函数传递 PHP 变量值时遇到了一些麻烦,每次我尝试在我的一个函数中使用变量时,它的值都会变为 nil,让我更具体一些。我有以下代码我的 php 文件:

$myvar = $Session['username'];

function updateuserinformation(){

        if(trim($_FILES["fileUpload"]["tmp_name"]) != ""){

            $images = $_FILES["fileUpload"]["tmp_name"];
            $new_images = "thumbnails_".$_FILES["fileUpload"]["name"];
            copy($_FILES["fileUpload"]["tmp_name"],"Photos/".$_FILES["fileUpload"]["name"]);
            $width=200; //*** Fix Width & Heigh (Autu caculate) ***//
            $size=GetimageSize($images);
            $height=round($width*$size[1]/$size[0]);
            $images_orig = ImageCreateFromJPEG($images);
            $photoX = ImagesX($images_orig);
            $photoY = ImagesY($images_orig);
            $images_fin = ImageCreateTrueColor($width, $height);
            ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
            ImageJPEG($images_fin,"Photos/".$new_images);
            ImageDestroy($images_orig);
            ImageDestroy($images_fin);

            print $data["foo"];

            echo"$myvar";

            mysql_query("UPDATE users SET userpictureaddress = 'http://www.litsdevelopment.com/litsapplication/userimages/MATEUS' WHERE username = 'Mateus' ");

        }
}

我试图在我的函数中使用 $myvar 值,但每次我运行代码时它都不起作用,我已经尝试过 global、globals、arrays 和 session,但没有任何效果。我正在制作有些地方有一点小错误,但是有人知道这样做的正确方法是什么吗?

【问题讨论】:

  • 嗯... $myvar = $Session['username']; 不应该是 $myvar = $_SESSION['username']; 吗?

标签: php arrays session variables


【解决方案1】:

如果您想了解 PHP 中变量作用域的工作原理,请阅读以下内容:

http://php.net/manual/en/language.variables.scope.php

$myvar = $Session['username'];

function updateuserinformation(){
    global $myvar;

        if(trim($_FILES["fileUpload"]["tmp_name"]) != ""){

            $images = $_FILES["fileUpload"]["tmp_name"];
            $new_images = "thumbnails_".$_FILES["fileUpload"]["name"];
            copy($_FILES["fileUpload"]["tmp_name"],"Photos/".$_FILES["fileUpload"]["name"]);
            $width=200; //*** Fix Width & Heigh (Autu caculate) ***//
            $size=GetimageSize($images);
            $height=round($width*$size[1]/$size[0]);
            $images_orig = ImageCreateFromJPEG($images);
            $photoX = ImagesX($images_orig);
            $photoY = ImagesY($images_orig);
            $images_fin = ImageCreateTrueColor($width, $height);
            ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
            ImageJPEG($images_fin,"Photos/".$new_images);
            ImageDestroy($images_orig);
            ImageDestroy($images_fin);

            print $data["foo"];

            echo"$myvar";

            mysql_query("UPDATE users SET userpictureaddress = 'http://www.litsdevelopment.com/litsapplication/userimages/MATEUS' WHERE username = 'Mateus' ");

        }
}

但正如@JohnConde 指出的那样,如果您尝试从会话中读取数据,那么您的意思似乎真的是 $_SESSION。

【讨论】:

    【解决方案2】:
    1. 你没有打电话给session_start()
    2. 你拼错了$_SESSION
    3. 如果您希望在函数中使用它们并遵循最佳实践,您需要将要在函数中使用的任何变量作为参数传递

      session_start();
      $myvar = $_SESSION['username'];
      
      function updateuserinformation($myvar){
      
          if(trim($_FILES["fileUpload"]["tmp_name"]) != ""){
      
              $images = $_FILES["fileUpload"]["tmp_name"];
              $new_images = "thumbnails_".$_FILES["fileUpload"]["name"];
              copy($_FILES["fileUpload"]["tmp_name"],"Photos/".$_FILES["fileUpload"]["name"]);
              $width=200; //*** Fix Width & Heigh (Autu caculate) ***//
              $size=GetimageSize($images);
              $height=round($width*$size[1]/$size[0]);
              $images_orig = ImageCreateFromJPEG($images);
              $photoX = ImagesX($images_orig);
              $photoY = ImagesY($images_orig);
              $images_fin = ImageCreateTrueColor($width, $height);
              ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
              ImageJPEG($images_fin,"Photos/".$new_images);
              ImageDestroy($images_orig);
              ImageDestroy($images_fin);
      
              print $data["foo"];
      
              echo"$myvar";
      
              mysql_query("UPDATE users SET userpictureaddress = 'http://www.litsdevelopment.com/litsapplication/userimages/MATEUS' WHERE username = 'Mateus' ");
      
          }
      

      }

    【讨论】:

      【解决方案3】:

      您需要将变量传递给函数,或者在函数内部声明它是全局变量。

      例如

      function updateuserinformation($myvar){
      

      global $myvar;
      echo $myvar;
      

      另外,在访问使用会话变量之前,您需要调用session_start()

      【讨论】:

      • 我试过了,你能提供一些代码吗,我也在网上搜索过,它不起作用!
      猜你喜欢
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      相关资源
      最近更新 更多