对于初学者,我必须在我的代码中这样做,所以我不是在寻找一个完全不同的'解。 为什么这不存储/返回我输入的值到全局变量?
编辑:我忘了把if放在一个函数中,所以分配错误&#39;无论如何,全球化。 这是一个有效的工作。<?php
$track;$cat;$title;
function storeData($track, $cat, $title){
$GLOBALS['track']=$track;
$GLOBALS['cat']=$cat;
$GLOBALS['title']=$title;
print 'inside function:';
print $GLOBALS['track'];
print $GLOBALS['cat'];
print $GLOBALS['title'];
return array($GLOBALS['track'],$GLOBALS['cat'],$GLOBALS['title']);
}
function getData($track, $cat, $title){
return array('track'=>$GLOBALS['track'],'cat'=>$GLOBALS['cat'],'title'=>$GLOBALS['title']);
}
$a=1;
if ($a==1) {
test($a);
}
function test($a){
$track='correct track ';
$cat='correct cat ';
$title='correct title ';
storeData($track, $cat, $title);
print 'storing this data:';
print $track;
print $cat;
print $title;
$cat='wrong'; $track='wrong'; $title='wrong';
$getting=getData();
$t=$getting['track'];
$c=$getting['cat'];
$e=$getting['title'];
print 'reading back this data:';
print $t;
print $c;
print $e;
}
?>
输出:
inside function:correct track correct cat correct title
storing this data:correct track correct cat correct title
reading back this data:correct track correct cat correct title
答案 0 :(得分:1)
从函数返回数组时,应该返回带有返回的$ GLOBALS值的局部变量。喜欢这个
$cat='wrong'; $track='wrong'; $title='wrong';
$returned_array = getData($track, $cat, $title);//read global var
$track = $returned_array[0];
$cat = $returned_array[1];
$title = $returned_array[2];
// then you print these variables
print 'reading back this data:';
print $track;
print $cat;
print $title;
答案 1 :(得分:1)
您的函数getData()
返回一个数组,但您从未使用过返回的值,这是包含正确数据的值。在这种情况下,你实际上根本不需要参数:
function getData()
{
return [
$GLOBALS['track'],
$GLOBALS['cat'],
$GLOBALS['title']
];
}
$data = getData();
$track = $data[0];
$cat = $data[1];
$title = $data[2];
或使用list()
进行更简洁的作业:
list($track, $cat, $title) = getData();
但是,如果您希望函数自己分配给变量,请注意默认情况下PHP函数是按值传递的。因此,当您传递参数时,您将传递其值的副本。要通过引用传递,您可以执行以下操作:
function getData(&$track, &$cat, &$title)
{
$track = $GLOBALS['track'];
$cat = $GLOBALS['cat'];
$title = $GLOBALS['title'];
}
getData($track, $cat, $title);
这将修改变量。
答案 2 :(得分:0)
这是因为你没有保存函数getData返回的变量。
$cat='wrong'; $track='wrong'; $title='wrong';
getData($track, $cat, $title);
print 'reading back this data:';
print $track;
print $cat;
print $title;
您只是调用函数但不保存它返回的变量。