Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:从函数返回一个值,并更改它所在的while循环的变量_Php_Function_While Loop - Fatal编程技术网

PHP:从函数返回一个值,并更改它所在的while循环的变量

PHP:从函数返回一个值,并更改它所在的while循环的变量,php,function,while-loop,Php,Function,While Loop,是否可以执行一个函数,然后为Var返回一个新值,因此当它再次尝试循环时,它会检查条件并检测更改 假设我有这个函数: 这是我的while循环: 我应该如何修改代码以便 函数changeZ为变量$z返回一个新值 因此,当循环检查条件1时,函数中的$z和循环中使用的$z不是同一个人。因此,您必须将loop-z的值设置为函数的返回值 $a = 0; $z = 10; while($a<$z){ $z = changeZ(); $a++; } 你必须把这个 $a = 0; $z

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

假设我有这个函数:

这是我的while循环:

我应该如何修改代码以便

函数changeZ为变量$z返回一个新值


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

$a = 0;
$z = 10;

while($a<$z){
    $z = changeZ();
    $a++;
}
你必须把这个

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

但正如所评论的,您似乎肯定是弄错了。

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

$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
}
因为函数返回一个值,所以应该将变量设置为包含返回值。这将执行您要求的操作,从而使循环只运行一次

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

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

$a = 0;
$z = 10;
while($a<$z){
$z = changeZ($z);
$a++;
}
这将导致循环在一个数字上升而另一个下降时运行5次
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++;
}

一般来说,$z=changeZ——但这对代码的编写方式没有意义。你想在这里干什么?你走错了路。@Jon我有一个与数据库交互的函数。while循环取决于我与数据库交互后得到的结果。这并不能说明什么…@Jon我只是不太确定$z=changeZ;适用于这种情况,因为$z不是此函数的主要主题$z只在一个条件下改变,比如说,如果一行在表中有一个特定的值。是的,所以把整行传递给函数。这就是我的意思,你走错了路。
$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
}
$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++;
}
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++;
}