2017-01-12 6 views
3

私は配列があります。私は、配列のすべての値で作業したい場合はループ内の配列の部分の使い方は?

$array = array(); 
$array[0] = "string"; 
$array[1] = "string1"; 
$array[2] = "string2"; 
$array[3] = "string3"; 
... 
$array[99] = "string99"; 
$array[100] = "string100"; 

を:

foreach ($array as $key => $value) 
{ 
    // Do something with the value 
} 

条件に応じて、私は配列の一部のみで作業する必要がある場合があります(例えば、50~100)。配列からキー50-100を抽出するにはどうすればよいですか?

あり、この方法があるが、それは効率的にあまりいないようです:

foreach ($array as $key => $value) 
{ 
    if ($key > 49) 
    { 
     // Do something with the value 
    } 
} 

はそれを行うための任意のより良い、より効率的な方法はありますか?

+1

固定インデックスを持つforループを使用できます –

+0

@ patryk-uszynski例を表示できますか? –

+2

patryk-uszynski、NN、arkaschaの回答はすべて動作しますが、私はpatryk-uszynskiがこの例に最も適しています! –

答えて

3

アレイは、数値インデックスを持っているので、あなたはforループを使用することができます。指定した範囲のキーだけが処理されます。使用する場合はforeachすべての要素になります。 50100>

for($i=50; $i<=100; $i++) { 
    //do something with $array[$i] 
} 

他のすべてのキー文句を言わない範囲<ため

例を処理すること。 array_slice()のような機能を使用することもできますが、効率的ではありません。

+0

恐ろしい!ありがとう –

2

PHPはそのための機能を提供array_slice()

上方キー50からの要素だけを使用した例を:要素50-60に、50のオフセットを持つ唯一の10エントリを使用して

foreach (array_slice($array, 50) as $key => $value) { 
    // Do something with the value 
} 

foreach (array_slice($array, 50, 10) as $key => $value) { 
    // Do something with the value 
} 

この関数を使用すると、配列の結果として得られる部分の長さとオプションのオフセットを指定できます。

は、マニュアルを参照してください:あなたの質問でhttp://php.net/manual/en/function.array-slice.php

0

使用配列スライス

array_slice($array, 50, 100); 
+0

素晴らしい!ありがとうございました –

+0

ようこそ@TrondroMulligan –

0
foreach ($array as $key => $value) 
{ 
    if ($key < 50 OR $key > 101) 
    { 
     continue; 
    } 
} 
+0

私はまだ100のキーをループしませんか? –

+0

はい、 'foreach'はそう言われているので、常に配列のすべての要素を繰り返し処理します。 –

+0

これらの値だけをループしたい場合は、 array_slice($ array、50、100)のように使用する必要があります。 –

関連する問題