函数

时间:2017-09-15 06:29:25

标签: php function

如何关于我的代码我不能调用函数内联函数

这是我的代码:

function antus(){
   global $vidi;
   $vidi = random_int(100, 999);
}


function bntus(){
   global $hexa;
   antus();
   $hexa = 5 * $vidi;
   echo $hexa;
}

bntus();

谢谢

3 个答案:

答案 0 :(得分:0)

你在两个函数中都缺少回报而不需要全局

function antus(){
$vidi = random_int(100, 999); 
return $vidi;
}


function bntus(){
$v = antus();
$hexa = 5 * $v;
return $hexa;
}

$a = bntus();

echo $a;

答案 1 :(得分:0)

虽然使用全局变量而不是参数和回报的风格很差,但我会告诉你如何做到这一点。

您不需要global $hexa,因为您从不在函数之外使用该变量。但是您需要将global $vidi放在bntus()中,以便它可以访问该变量。

此外,获取随机整数的函数名称为rand(),而不是random_int()

function antus(){
   global $vidi;
   $vidi = rand(100, 999);
}

function bntus(){
   global $vidi;
   antus();
   $hexa = 5 * $vidi;
   echo $hexa;
}

bntus();

DEMO

答案 2 :(得分:0)

首先,您的代码根本不运行,因为它无法编译。 PHP语句以;结尾(但在您的代码中,它在几个地方都丢失了。)

格式正确且没有语法错误,函数bntus()的代码应如下所示:

function bntus()
{
    global $hexa;
    antus();
    $hexa = 5 * $vidi;
    echo $hexa;
}

现在它会运行,但它不会产生您期望的结果,因为变量$vidi未初始化。

如果您认为函数antus()的调用会在$vidi中放置一些随机值,那么您就错了。函数antus()全局变量$vidi中放置一个值。函数bntus()中无法访问该变量;它使用具有相同名称的未初始化的本地变量。

阅读PHP中的scope of variables

在函数$vidi中将global声明为bntus()会产生预期的结果,但使用全局变量是一种非常糟糕的编程技术。它现在已经过时了大约40 - 50年,因为它使程序难以开发和维护。

更好的方法是让函数return得到它们计算的值:

function antus()
{
    return random_int(100, 999);
}

function bntus()
{
    return 5 * antus();
}

echo(bntus());

还有一件事:您没有发布函数random_int()的代码,但是如果它的名称是什么,那么您不需要用户函数。 PHP已经提供了rand()函数,当使用两个整数参数调用时,它会从由两个输入值(包括它们)限定的区间返回一个随机整数。

这意味着来电rand(100, 999)会返回一个随机整数$n100< = $n< = 999