PHP循环一半的数组

Mat*_*iby 4 php arrays loops

所以我有一个像这样的数组:

foreach($obj as $element){
//do something
}
Run Code Online (Sandbox Code Playgroud)

但是如果数组包含50个以上的元素(通常是100个),我只想循环它们中的前50个,然后打破循环.

Cri*_*ian 13

干净的方式:

$arr50 = array_slice($obj, 0, 50);
foreach($arr50 as $element){
    // $element....
}
Run Code Online (Sandbox Code Playgroud)

正常方式(这仅适用于具有数字索引和asc顺序的数组):

for($i=0; $i<50 && $i<count($obj); $i++){
  $element = $obj[$i];
}
Run Code Online (Sandbox Code Playgroud)

或者如果你想使用,foreach你将不得不使用一个柜台:

$counter = 0;
foreach($obj as $element){
  if( $counter == 50) break;
  // my eyes!!! this looks bad!
  $counter++;
}
Run Code Online (Sandbox Code Playgroud)


Dog*_*ert 10

循环一半.

for($i=0; $i<count($obj)/2; $i++)
{
  $element = $obj[$i];
  // do something
}
Run Code Online (Sandbox Code Playgroud)

或者如果你想要前50个元素

$c = min(count($obj), 50);
for($i=0; $i<$c; $i++)
{
  $element = $obj[$i];
  // do something
}
Run Code Online (Sandbox Code Playgroud)

  • 仅适用于具有以0开头且其键是连续的整数键的数组. (5认同)

Ale*_*nov 7

适用于任何数组,不仅适用于具有数字键的数组0, 1, ...:

$i = 0;
foreach ($obj as $element) {
    // do something
    if (++$i == 50) {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)