Как предопределить переменную в функции, используя другую переменную?

#php

#php

Вопрос:

Я не знаю, как предопределить одну из переменных в функции.

 <?php 
    $number = 3;
    function test($num, $num2 = $number) {
        $result = "num = ".$num." and num2 = ".$num2;
        return $result;
    }


    echo test(1);

?>
  

Он всегда выводит:

Неустранимая ошибка: константное выражение содержит недопустимые операции в C:xampphtdocsphpindex.php в строке 3

Ответ №1:

Лучше использовать это так:

 function test($num, $num2 = 3) {/**/}
  

Но, если вам это действительно нужно, вы можете определить константу:

 const NUMBER = 3;

function test($num, $num2 = NUMBER)
{
    $result = "num = $num and num2 = $num2";
    return $result;
}

echo test(1); // returns "num = 1 and num2 = 3"
  

И вариант 3d, если вы хотите использовать какую-либо динамическую переменную:

 $number = 3;

function test($num, $num2)
{
    $result = "num = $num and num2 = $num2";
    return $result;
}

echo test(1, $number); // returns "num = 1 and num2 = 3"
  

Или вы можете использовать класс:

 class Test
{
    protected $number;

    public function __construct($number)
    {
        $this->number = $number;
    }

    public function test($num)
    {
        $result = "num = $num and num2 = $this->number";
        return $result;
    }
}

$test = new Test(3);

echo $test->test(1); // returns "num = 1 and num2 = 3"
  

Ответ №2:

Если вы хотите присвоить параметру значение по умолчанию, вы должны использовать значение (постоянное выражение), а не var (переменное выражение)

 function test($num, $num2 = 3 )
  

Комментарии:

1. хорошо, но я хотел бы использовать var или что-то в этом роде. Возможно ли это?

2. почему ?? .. когда вам нужно, вы можете передать содержимое var. в вызове функции `test($num, $number) .. Таким образом, вы хотите присвоить значение параметра по умолчанию в качестве выражения переменной вместо постоянного выражения..