2014-01-24 27 views
1

如何在调用函数时自动递增数值?在这里我正在尝试做的事情,我需要这样做。除了调用函数之外,不能以任何其他方式增加它。调用函数时自动递增数值

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

makeyogurt(); 
+1

这将导致无限循环。 – putvande

+4

你究竟想用这些代码来完成什么? –

+0

'$ type ++'将增加变量,但返回其原始值。 '$ type'值是一个局部变量,所以它只会存在于该函数调用中。你想要像'makeyogurt($ type + 1);'? –

回答

0

$type++是所谓的后递增,这意味着它会在数值通过后增加。

你在找什么是++$type,这是一个预先增量,并会通过新增值。

+0

这是为什么downvoted?我做到了这一点,它的工作原理。而不是makeyogurt($ type ++)我没有++类型。那是错的吗? – Norman

+0

@Norman如果这解决了你的问题,那么请接受它作为答案。 –

+0

我会(并且)。但是我想知道是否有些东西因为它被低估而不正确。 – Norman

0

试试这个:

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

makeyogurt(); 
+0

嘿,它有同样的问题:递归性。 – CentaurWarchief

+1

是的,但他没有说他不想递归... – taxicala

+0

是的,这是真的。 – CentaurWarchief

8

还有你的代码将必然导致一个无限循环。我猜你要搜索的关键字static

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

    echo "$counter"; 
} 

如果使用static函数/方法的定义中,变量将获得创建仅在第一次函数/方法被调用。它的值将在调用后保存,并且变量将在下次调用中初始化为该值。

现在你可以这样调用该函数:

fun(); 
fun(); 
fun(); 

输出将是:

1 
2 
3 

入住这manual page

+0

这个问题并不十分清楚,但我认为*这是OP正在寻找的东西。 +1 –

+0

@AmalMurali Hey Amal! Thx :)我可以解释如何使用通过引用来递增,否则。虽然这在理论上是可行的,但是如何让它有意义呢? – hek2mgl

+0

它不 - 这就是为什么我[要求澄清](http://stackoverflow.com/questions/21336558/auto-increment-a-value-when-calling-a-function/21336628?noredirect=1# comment32165423_21336558)在问题的评论:) –

0

如果你没有在函数外部定义$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