Php 全局作用域变量未从函数返回
我想我已经盯着这个看太久了,但是为什么$sum不回应23呢? 我的目标是将全局作用域的$sum注入函数,并在函数完成时返回Php 全局作用域变量未从函数返回,php,Php,我想我已经盯着这个看太久了,但是为什么$sum不回应23呢? 我的目标是将全局作用域的$sum注入函数,并在函数完成时返回 <?php $sum = 0; function find_divisible() { for ($i = 0; $i < 10; $i++) { if ($i % 5 == 0) { echo "<br>".' $sum is equal to '.$sum.' and $i is equal
<?php
$sum = 0;
function find_divisible() {
for ($i = 0; $i < 10; $i++) {
if ($i % 5 == 0) {
echo "<br>".' $sum is equal to '.$sum.' and $i is equal to '.$i;
$sum += $i;
}elseif ($i % 3 == 0) {
echo "<br>".' $sum is equal to '.$sum.' and $i is equal to '.$i;
$sum += $i;
}else {
echo "<br/>$i is not divisible...";
}
}
return $sum;
}
find_divisible($sum);
echo "<br>";
echo $sum;
?>
因此,在代码中有3个主要错误/问题: 一,。您忘记了顶部函数中的下一行
global $sum;
二,。返回$sum,但不将函数调用分配给变量,因此可以删除它
三,。将$sum作为参数传递给函数,但函数不接受任何参数,因此删除函数调用中的所有参数
但是为了实现你的目标,我看到了34种不同的方式
一,。现在使用全局变量,但我不建议这样做,因为以后会变得非常混乱和封装?如果您使用global,您可能会忘记这一点
二,。您可以将变量作为参数传递,您的代码如下所示:
$sum = 0;
function find_divisible($sum) {
//Code
return $sum;
}
$sum = find_divisible($sum);
echo $sum;
$sum = 0;
function find_divisible(&$sum) {
//^ See here
//Code
}
find_divisible($sum);
echo $sum;
function find_divisible() {
$sum = 0;
//Code
return $sum;
}
$sum = find_divisible();
echo $sum;
三,。您可以通过引用传递变量,您的代码如下所示:
$sum = 0;
function find_divisible($sum) {
//Code
return $sum;
}
$sum = find_divisible($sum);
echo $sum;
$sum = 0;
function find_divisible(&$sum) {
//^ See here
//Code
}
find_divisible($sum);
echo $sum;
function find_divisible() {
$sum = 0;
//Code
return $sum;
}
$sum = find_divisible();
echo $sum;
四,。如果您说$sum始终为0,并且只返回$sum并将其分配给变量,则不必使用任何参数,代码如下所示:
$sum = 0;
function find_divisible($sum) {
//Code
return $sum;
}
$sum = find_divisible($sum);
echo $sum;
$sum = 0;
function find_divisible(&$sum) {
//^ See here
//Code
}
find_divisible($sum);
echo $sum;
function find_divisible() {
$sum = 0;
//Code
return $sum;
}
$sum = find_divisible();
echo $sum;
希望这个答案对您有所帮助,我认为看到不同的方法/解决方案总是很好的因此在您的代码中有3个主要错误/问题: 一,。您忘记了顶部函数中的下一行
global $sum;
二,。返回$sum,但不将函数调用分配给变量,因此可以删除它
三,。将$sum作为参数传递给函数,但函数不接受任何参数,因此删除函数调用中的所有参数
但是为了实现你的目标,我看到了34种不同的方式
一,。现在使用全局变量,但我不建议这样做,因为以后会变得非常混乱和封装?如果您使用global,您可能会忘记这一点
二,。您可以将变量作为参数传递,您的代码如下所示:
$sum = 0;
function find_divisible($sum) {
//Code
return $sum;
}
$sum = find_divisible($sum);
echo $sum;
$sum = 0;
function find_divisible(&$sum) {
//^ See here
//Code
}
find_divisible($sum);
echo $sum;
function find_divisible() {
$sum = 0;
//Code
return $sum;
}
$sum = find_divisible();
echo $sum;
三,。您可以通过引用传递变量,您的代码如下所示:
$sum = 0;
function find_divisible($sum) {
//Code
return $sum;
}
$sum = find_divisible($sum);
echo $sum;
$sum = 0;
function find_divisible(&$sum) {
//^ See here
//Code
}
find_divisible($sum);
echo $sum;
function find_divisible() {
$sum = 0;
//Code
return $sum;
}
$sum = find_divisible();
echo $sum;
四,。如果您说$sum始终为0,并且只返回$sum并将其分配给变量,则不必使用任何参数,代码如下所示:
$sum = 0;
function find_divisible($sum) {
//Code
return $sum;
}
$sum = find_divisible($sum);
echo $sum;
$sum = 0;
function find_divisible(&$sum) {
//^ See here
//Code
}
find_divisible($sum);
echo $sum;
function find_divisible() {
$sum = 0;
//Code
return $sum;
}
$sum = find_divisible();
echo $sum;
希望这个答案对您有所帮助,我认为看到不同的方法/解决方案总是很好的您可以将$sum作为如下参考:
function find_divisible(&$sum) {
// code here
}
但是您不需要从函数返回它。在函数中对其所做的任何更改都将对传递到find_divisible$sum的原始变量进行更改。您可以将$sum作为引用传递,如下所示:
function find_divisible(&$sum) {
// code here
}
但是您不需要从函数返回它。在函数中对它所做的任何更改都会对传递到find_divisible$sum的原始变量进行更改,只需使用global关键字即可
global $sum;
尽管如此,我还是建议将其作为这样的参数
function find_divisible($sum) {
...
}
只需使用全局关键字
global $sum;
尽管如此,我还是建议将其作为这样的参数
function find_divisible($sum) {
...
}
您真的应该远离全局关键字,因为它破坏了封装,从长远来看可能会引起很多麻烦。最好将变量作为参数传递到函数中。@CarlMarkham同意你的观点,而且因为我认为$sum是每次0 OP甚至不需要作为参数传递时,他就可以在函数中声明它。我唯一能想到的是,作为一个论据,值得一提的是for loopSorry@Rizier123的最大值,但只要global仍然是您的首选解决方案,就要保持向下投票answer@BrokenBinary这是什么便宜的促销@CarlMarkham谢谢,至少你能解释你为什么否决投票!有了这个,我就可以更好地工作并给出答案。你真的应该远离全局关键字,因为它破坏了封装,从长远来看可能会引起很多麻烦。最好将变量作为参数传递到函数中。@CarlMarkham同意你的观点,而且因为我认为$sum是每次0 OP甚至不需要作为参数传递时,他就可以在函数中声明它。我唯一能想到的是,作为一个论据,值得一提的是for loopSorry@Rizier123的最大值,但只要global仍然是您的首选解决方案,就要保持向下投票answer@BrokenBinary这是什么便宜的促销@CarlMarkham谢谢,至少你能解释你为什么否决投票!有了这个,我可以工作,让答案更好。我也是这样!非常感谢!事实上,你告诉我,我也不必做回报。我也喜欢这个!非常感谢!事实上,你告诉我,我也不必做回报。