2014-01-24 29 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