2016-02-14 55 views
0

使用它在foreach循環創建我有下面的代碼在PHP:變量函數調用在PHP

foreach($lines as $num=>value){ 
    fixIndex(); 
    if ($num <$i)continue; 


    function fixIndex(){ 
    static $i=0; 
    static $j=1; 
    if($j-$i==60)$i=$i=$i+60; 
    $j++; 
    return $i; 
    } 

有在運行的程序沒有錯誤。但$我似乎沒有影響。當我將它改爲數字時,即60,它會按照我的意願跳過60條記錄。 任何人都可以幫我解決這個問題嗎? 在此先感謝。

+0

如果你想提取一個數組的片,你可以使用php的array_slice()。 https://php.net/manual/en/function.array-slice.php。 'array_slice($ input,60,-1,true)' – Progrock

回答

-1

你有語法錯誤value$value 和foreach沒有}

試試這個

foreach($lines as $num=>$value){ 
    fixIndex(); 
    if ($num <$i)continue; 
} 

function fixIndex(){ 
    static $i=0; 
    static $j=1; 
    if($j-$i==60)$i=$i=$i+60; 
    $j++; 
    return $i; 
} 
0

完全錯誤和奇怪我:

第一 - 這是不夠的:

$i += 60; or $i = $i + 60; //you wrote $i=$i=$i+60 

二 - 使用(總是)

{} and paragraphs like this 

if ($j-$i==60) { 
    //body here 
} 

因爲你用靜止無功(但不建議太)這時並不需要

return $i; 

。回報是正確的,如果您分配結果的函數變量,即

$i = fixIndex(); 

這種情況永遠不會滿足

if($j-$i==60) 

,因爲上面這一點,你初始化變量$ i和每一次附加$ J

static $i=0; 
static $j=1; 

1 - 0!= 60,永遠不會!

0

首先,我很抱歉的類型錯誤。它真的是

if($j-$i==60)$i=$i+60; 
$J++; 

我同意返回$ i;沒有必要。 foreach循環還有更多的代碼遵循,這就是爲什麼}還沒有看到。 根據手冊,靜態只設置$ i和$ j一次。當函數退出時。 $ j增加1,所以在60後調用該函數。 $ j- $ i == 60應該會發生。在那個時候$ i應該會影響並改爲60. 我真正的問題是改變$ i的值,在fixIndex函數後增加$ j $ 60。任何幫助? 非常感謝您的及時答覆。如果我對問題的解釋不夠清楚,請指出。 謝謝大家。