Как создать глобальную переменную, как 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
Как проверить, если '$ evens' предусмотрено или нет? 'odd_numbers' может вызываться с или без' $ evens'. – akinuri
Вы можете использовать http://php.net/manual/en/function.func-num-args.php - я обновлю ответ на пример – rjdown
Хорошо, похоже, это трюк. – akinuri