Php 使用在该函数之外的函数中声明的变量

Php 使用在该函数之外的函数中声明的变量,php,Php,我使用PHP创建了一个函数,如下所示 <?php function addImage($imageFolder, $imageName) { global $imageName; $imageName = 'stackoverflow'.$imageName; if (condition) { global $imageFolder; $imagePath = $imageFolder.''.$imageName;

我使用PHP创建了一个函数,如下所示

<?php

function addImage($imageFolder, $imageName) {

    global $imageName;

    $imageName = 'stackoverflow'.$imageName;

    if (condition) {

        global $imageFolder;

        $imagePath = $imageFolder.''.$imageName;

        if (move_uploaded_file($_FILES['image']['tmp_name'], $imagePath)) {

            return true;

        }

    }       
}

if(addImage('image/', $imageName)){

    echo $imageName;
    echo $imageFolder;
}

?>


我面临的问题是,我能够在函数外部获取
$imageName
,但无法获取
$imageFolder
var\u dump($imageFolder)
显示
null
)。我不熟悉
全局变量
,我真的不知道我是否正确使用了它

你走错了路。您已经拥有函数外部的值。将它们分配给变量以重用它们<代码>全局用于访问函数外部声明的变量。例如:

$myVariable = "hello"; 
function test() {
     global $myVariable;
     echo $myVariable;
}
test();
//output: hello
您可以在函数外部查看$imageName,因为您将其设置为global语句之后的值。但这真的不是正确的方法

如果要修改传递的变量,请使用引用()

你应该这样做:

<?php

function addImage($imageFolder, &$imageName) {

    $imageName = 'stackoverflow'.$imageName;

    if (condition) {

        $imagePath = $imageFolder.''.$imageName;

        if (move_uploaded_file($_FILES['image']['tmp_name'], $imagePath)) {

            return true;

        }

    }       
}

$imageFolder = 'image/';
$imageName = "..."; // don't know where this comes from in your code.

if(addImage($imageFolder, $imageName)){

    echo $imageName;
    echo $imageFolder;
}

你走错了路。您已经拥有函数外部的值。将它们分配给变量以重用它们<代码>全局
用于访问函数外部声明的变量。例如:

$myVariable = "hello"; 
function test() {
     global $myVariable;
     echo $myVariable;
}
test();
//output: hello
您可以在函数外部查看$imageName,因为您将其设置为global语句之后的值。但这真的不是正确的方法

如果要修改传递的变量,请使用引用()

你应该这样做:

<?php

function addImage($imageFolder, &$imageName) {

    $imageName = 'stackoverflow'.$imageName;

    if (condition) {

        $imagePath = $imageFolder.''.$imageName;

        if (move_uploaded_file($_FILES['image']['tmp_name'], $imagePath)) {

            return true;

        }

    }       
}

$imageFolder = 'image/';
$imageName = "..."; // don't know where this comes from in your code.

if(addImage($imageFolder, $imageName)){

    echo $imageName;
    echo $imageFolder;
}

问题在于
global
关键字不能使现有变量成为全局变量。相反,它告诉PHP,当您使用该名称引用变量时,它应该查看全局范围

您有两个选项可以修复此问题:

1.对参数使用不同于全局变量的变量名 3.不要使用globals(可能是更好的解决方案)[谢谢]
问题在于
global
关键字不能使现有变量成为全局变量。相反,它告诉PHP,当您使用该名称引用变量时,它应该查看全局范围

您有两个选项可以修复此问题:

1.对参数使用不同于全局变量的变量名 3.不要使用globals(可能是更好的解决方案)[谢谢]


第三个选项,不要在all@RobbieAverill更新。第三个选项,在all@RobbieAverill更新。
<?php

function addImage($imageFolder, $imageName) {
    $imageName = 'stackoverflow'.$imageName;

    if (condition) {

        $imagePath = $imageFolder.''.$imageName;

        if (move_uploaded_file($_FILES['image']['tmp_name'], $imagePath)) {

            return $imageName;

        }

    }  
    return false;
}

$imageFolder = 'image/';
if($imageName = addImage($imageFolder, $imageName)){

    echo $imageName;
    echo $imageFolder;
}

?>