0

是否可以执行一个函数,然后为 Var 返回一个新值,因此当它再次尝试循环时,它会检查条件并检测更改


假设我有这个function

   function changeZ(){
   $z=1
   return $z;      
   }

这是我的while循环:

$a = 0;
$z = 10;
while($a<$z){
changeZ();
$a++;
}

我应该如何修改代码,以便

函数changeZ()返回变量的新值$z

因此,当循环检查条件(1<1) 时,它返回false停止循环

4

6 回答 6

0

您可以将其用于将函数返回的数据存储到数组中。

function changeZ(){
     $z = $row['result'];       //your data from database
     return $z;      
}

$a = 0;
$z = 10;
$returned_value=new array();

while($a<$z){
    $returned_value[] = changeZ();
    $a++;
}
于 2012-05-11T10:58:46.040 回答
0
$a = 0;
$z = 10;
while($a<$z){
$z = changeZ();
$a++;
}

由于您的函数返回一个值,因此您应该将变量设置为包含返回值。这将按照您的要求执行,导致循环仅运行一次。

您可以做的另一件事是将变量传递给这样的函数

function changeZ($in){
$out = $in-1;
return $out;
}

$a = 0;
$z = 10;
while($a<$z){
$z = changeZ($z);
$a++;
}

这将导致循环运行 5 次,一个数字上升另一个数字下降 0<10 1<9 2<8 3<7 4<6

于 2012-05-11T10:13:45.297 回答
0

函数中的 $z 和循环中使用的 $z 不是同一个人。因此,您必须将 loop-z 的值设置为函数的返回值...

$a = 0;
$z = 10;

while($a<$z){
    $z = changeZ();
    $a++;
}
于 2012-05-11T09:56:50.310 回答
0

你必须把这个

$a = 0;
$z = 10;
while($a<$z) {
    $z = changeZ();
    $a++;
}
于 2012-05-11T09:57:21.230 回答
0
$z = changeZ();

但正如评论的那样,你似乎肯定会犯这个错误。

于 2012-05-11T09:59:31.173 回答
0

您可以通过引用传递或返回值

$z = 100;
change($z);

function change(&$var) {
  $var = 1;
}

$z = 100;
$z = change($z);
function change($var) {
  return $var * 100 - 50;// Logic with $z obviously can be whatever
}
于 2012-05-11T09:59:45.213 回答