Php 调用函数时自动增加值

Php 调用函数时自动增加值,php,Php,调用函数时如何自动增加值?这就是我要做的,我需要这样做。除了调用函数外,不能以任何其他方式增加它 function makeyogurt($type = 1) { echo "Quantity $type.\n"; makeyogurt($type++); } makeyogurt(); 试试这个: function makeyogurt($type = 1) { echo "Quantity $type.\n"; $type += 1; makeyo

调用函数时如何自动增加值?这就是我要做的,我需要这样做。除了调用函数外,不能以任何其他方式增加它

function makeyogurt($type = 1) {
    echo "Quantity $type.\n";
    makeyogurt($type++);
}

makeyogurt();
试试这个:

function makeyogurt($type = 1) {
    echo "Quantity $type.\n";
    $type += 1;
    makeyogurt($type);
}

makeyogurt();
试试这个:

function makeyogurt($type = 1) {
    echo "Quantity $type.\n";
    $type += 1;
    makeyogurt($type);
}

makeyogurt();

您所展示的代码必然会导致无限循环。我猜您正在搜索
static
关键字:

function fun() {
    static $counter = 0;
    $counter++;

    echo "$counter";
}
如果在函数/方法定义中使用
static
,则仅在第一次调用函数/方法时才会创建变量。它的值将在调用后保存,变量将在下一次调用中初始化为该值

现在您可以这样调用函数:

fun();
fun();
fun();
输出将是:

1
2
3

选中此项

您显示的代码必然会导致无限循环。我猜您正在搜索
static
关键字:

function fun() {
    static $counter = 0;
    $counter++;

    echo "$counter";
}
如果在函数/方法定义中使用
static
,则仅在第一次调用函数/方法时才会创建变量。它的值将在调用后保存,变量将在下一次调用中初始化为该值

现在您可以这样调用函数:

fun();
fun();
fun();
输出将是:

1
2
3

选中此项

$type++
是所谓的后期增量,这意味着它将在传递值后递增


您要查找的是
++$type
,它是一个预增量,将传递新增加的值。

$type++
是一个所谓的后增量,意味着它将在传递值后递增


您要查找的是
+$type
,它是一个预增量,将传递新增加的值。

如果不在函数外部定义
$type
,它将始终为1。我不确定你想要什么,但也许这个

$type=1;

function makeyogurt($type = 1) {
   echo "Quantity $type.\n";
   global $type;
   ++$type;
   }    

makeyogurt(); //makes it 2
或者这个:

$type=1;
function makeyogurt($a = 1) {
   echo "Quantity $a.\n";
   ++$a;
   return $a;
   }    

$type=makeyogurt($type); //makes it 2

如果不在函数外部定义
$type
,则它始终为1。我不确定你想要什么,但也许这个

$type=1;

function makeyogurt($type = 1) {
   echo "Quantity $type.\n";
   global $type;
   ++$type;
   }    

makeyogurt(); //makes it 2
或者这个:

$type=1;
function makeyogurt($a = 1) {
   echo "Quantity $a.\n";
   ++$a;
   return $a;
   }    

$type=makeyogurt($type); //makes it 2


这将导致一个无限循环。您使用该代码到底想实现什么?
$type++
将递增变量,但返回其原始值
$type
值是一个局部变量,因此它将只存在于该函数调用中。你想要类似于
make酸奶($type+1)的东西吗?您需要在递归函数调用之前进行终止条件检查。堆栈有有限的空间。这将永远循环。这将导致无限循环。您使用该代码到底想实现什么?
$type++
将递增变量,但返回其原始值
$type
值是一个局部变量,因此它将只存在于该函数调用中。你想要类似于
make酸奶($type+1)的东西吗?您需要在递归函数调用之前进行终止条件检查。堆栈有有限的空间。这将永远循环。嘿,它有相同的问题:递归性。嘿,它有相同的问题:递归性。从这个问题上看不是很清楚,但我认为这就是OP想要的+1@AmalMurali嘿,阿马尔!Thx:)否则我可以解释如何使用“按引用传递”进行增量。虽然这在理论上是可能的,但它有什么意义呢?它没有-这就是为什么我在问题下面的评论中:)@AmalMurali啊,明白了:)问题不是很清楚,但我认为这就是OP想要的+1@AmalMurali嘿,阿马尔!Thx:)否则我可以解释如何使用“按引用传递”进行增量。虽然这在理论上是可能的,但它有什么意义呢?它没有——这就是为什么我在问题下面的评论中:)@AmalMurali啊,明白了:)为什么这被否决了?我就是这么做的,而且很有效。我没有使用make酸奶($type++),而是使用了++类型。“错了吗?”诺曼:如果这解决了你的问题,那么请接受它作为答案。我会的(而且已经做到了)。但是我想知道,自从它被否决后,是否有些东西是不正确的。呵呵,这很有趣:)我没有否决这一点,但没想到这是问题的解决方案,因为所讨论的代码是一个无限循环。。现在它被
-1接受了
。我仍然不确定他们想要在这里实现什么……为什么投票被否决了?我就是这么做的,而且很有效。我没有使用make酸奶($type++),而是使用了++类型。“错了吗?”诺曼:如果这解决了你的问题,那么请接受它作为答案。我会的(而且已经做到了)。但是我想知道,自从它被否决后,是否有些东西是不正确的。呵呵,这很有趣:)我没有否决这一点,但没想到这是问题的解决方案,因为所讨论的代码是一个无限循环。。现在它被
-1接受了
。我仍然不确定他们想要在这里实现什么。。