如何像preg_match为$matches
参数创建全局变量那样创建全局变量?
在下面的代码中,preg_match
创建全局$Hel_matches
和$Wor_matches
变量,即使它们没有定义。
$string = "Hello, World!";
$pattern1 = '/Hel/';
$pattern2 = '/Wor/';
preg_match($pattern1, $string, $Hel_matches);
preg_match($pattern2, $string, $Wor_matches);
print_r($Hel_matches);
print_r($Wor_matches);
我希望能够做同样的事情。
例如,odd_numbers()
返回一个由0
和$max
之间的奇数填充的数组。
function odd_numbers($max) {
$numbers = [];
for ($i = 0; $i <= $max; $i++) {
if ($i % 2 == 1) {
$numbers[] = $i;
}
}
return $numbers;
}
$odd_numbers = odd_numbers(10);
print_r($odd_numbers);
如果我想在odd_numbers()
中进行一些额外的计算,并返回(例如,出于调试目的),那么,我不能。我只能归还一件东西。因此,我将第二个参数(变量)传递给odd_numbers()
,函数将返回值返回/分配给该变量。
// $odd_numbers = odd_numbers(10, $evens); // fill $evens (if provided) with even numbers for debug purposes
print_r($odd_numbers);
// print_r($evens); // debug
您可以通过在变量前加&
:来使用引用
function odd_numbers($max, &$evens = array()) {
// blah
$numbers = array(1, 3, 5);
if (func_num_args() == 2) {
$evens = array(2, 4, 6);
}
return $numbers;
}
$odd_numbers = odd_numbers(10, $evens);
var_dump($evens);
输出:
array (size=3)
0 => int 2
1 => int 4
2 => int 6