2011-01-26 3 views
4

オブジェクトのループと配列が必要です。場合によっては、ループの内部で、内部ポインタを配列の次の要素に移動する必要があります。それ、どうやったら出来るの?次PHP:配列オブジェクトをforeachし、内部ポインタを次のポインタに移動する方法は?

foreach($objects as $object) 
{ 
    // TODO: move internal pointer to next one? 
    // next($objects) doesn't work 
} 
+2

'continue'?または私はポイントを逃している? – mhitza

+0

関数 'move()'は存在せず、実際にはあなたが望むものは得られません。 'foreach'は配列の全エントリを繰り返します。では、「内部ポインタを移動する」とはどういう意味ですか? 'foreach'ではポインタを処理する必要はありません(next()、current()、...) – KingCrunch

+0

@mhitza:配列に10個のオブジェクトがあり、5番目にあります。私は、次の反復で次の反復で私を7番目に移動させるようにポインタを前進させたい。 – StackOverflowNewbie

答えて

9

の内部配列ポインタを進める:

foreach ($objects as $object) { 
    if (!interesting($object)) { 
     continue; 
    } 

    // business as usual 
} 

場合を次にスキップするかどうかを決定する必要があります。

私は最初にあなたが何をしたいかを表現するためのより良いロジックがないかどうかチェックしたいと思います。存在しない場合は、@netcoder's list each exampleがより簡潔な方法です。

0

next($objects)

- あなたは配列ポインタを移動することはできませんが、あなたはskip the iterationできる配列

+0

そして、あなたは内部ポインタをどのような配列に進めたいのでしょうか? : – deceze

+0

@deceze、opの質問* "内部ポインタを配列の次の要素に移動する必要があります" * –

+0

* "... foreach'ループで" * – deceze

5

前述のように、数字キーを使用している場合にのみforまたはcontinueを使用できます。別の方法としては、(それがforeachような配列んのコピーを作成しないよう)など、あなたがnextで配列ポインタを移動することができますlisteach反復法、prevを、使用することです:

$array = array(1,2,3,4,5); 

while (list($key, $value) = each($array)) { 
    echo $value; 
    next($array); 
} 

ます出力:さて、私は理解していることを、あなたが欲しいもの

024 
0

;)他の2つのソリューション

$c = count($array); 
for ($i = 0; $i < $c; $i += 2) { 
    $item = $array[$i]; 
} 

foreach (range(0, count($array), 2) as $i) { 
    $item = $array[$i]; 
} 
0

forループを使用すると、次のようになります。

for($i = 0; $i < sizeof($array); $i++) 
{ 
    echo $array[$i]->objectParameter; 
    $i++; //move internal pointer 
    echo $array[$i]->objectParameter; 
    $i++; //move internal pointer again 
    echo $array[$i]->objectParameter; 
    //$i++; //no need for this because for loop does that 
} 
関連する問題