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