对不起这样一个蹩脚的头衔,但我不知道该放什么,希望你能理解。另外,我不知道之前是否曾提出类似的问题,因为我不知道它的正确关键字 - 因此也不能谷歌。
基本......在查看preg_match_all();
时,他们获得了匹配参数,该参数将创建在函数中定义的新数组,并使我们能够在函数执行后访问它。 / p>
问题是..我如何在自己的功能中实现这样的功能?但它可以创建单个变量和/或数组。
提前致谢!
答案 0 :(得分:4)
preg_match_all()
接受对数组的引用,该数组在其自己的范围内称为$matches
。如函数原型中所示:
array &$matches
如果调用该函数并传入一个变量,如果它在调用范围中尚不存在,则会创建该变量。因此,在用户定义的函数中,您使用&
通过引用接受参数,然后在函数内使用它。只需在函数调用中声明它就可以创建外部变量,就像使用preg_match_all()
调用$matches
一样。
一个例子:
function foo(&$bar) {
$bar = 'baz';
}
// Declare a variable and pass it to foo()
foo($variable);
echo $variable; // baz
答案 1 :(得分:3)
我认为你指的是函数parameters passed by reference,不是吗?
function putValInVar(&$myVar, $myVal){
$myVar = $myVal;
}
$myVar = 1;
putValInVar($myVar, 2);
echo $myVar; // outputs '2', but will output '1' if we remove the '&' //
默认情况下,PHP中的函数参数按值传递。这意味着在每个函数调用时都会创建新变量,这些变量只存在于函数内部,不会影响其外部的任何变量。
要指定参数引用,语法是在函数头中声明它之前附加&
。这将指示PHP在函数内部使用传递的变量,而不是创建它的副本。
异常:对象总是通过引用传递。(嗯......不是真的,但它很复杂。有关详细信息,请参阅注释线程。)
答案 2 :(得分:2)
我认为你要求的是passing-by-reference。 preg_match_all基本上用于“创建”其范围之外的数组变量:
function preg_match_all($foo, $bar, & $new_var) {
$new_var = array(1,2,3);
}
这里的关键点是函数定义中的&
。这允许您在传递时覆盖外部作用域中的变量。
在风格上,这应该谨慎使用。尝试返回数组或结果,而不是通过引用传递。
答案 3 :(得分:0)
像这样:
$myvariable = runfunction();
function runfunction() {
//do some code assign result to variable (ie $result)
return $result;
}
或者
global $result;
function runfunction() {
global $result;
$result = 'something';
}