web-dev-qa-db-ja.com

配列の終わりPHPが特定の反復回数に達するまで、ORループを実行しますか?

1つの配列を入力として受け取り、そこから値をフィルター処理して、別の配列として出力したいと思います。関数は、最大x回の反復をループする必要があります。

たとえば、入力からallの値を出力する場合は、次を使用します。

<?php
$i=0;
foreach ($array as $data) {
    if ($data['type'] != 'some_value') {
        $formatted_array[$i] = $data;
        $i++;
    }
}
return $formatted_array;    

しかし、$arrayには大きなインデックスがありました。$formatted_array私が必要とするよりも大きいでしょう。複数の条件でforループを使用しようとしましたが、無限ループでスタックしているようです。

私は貿易による開発者ではないので、論理を理解するのは難しいです。エラーが発生していないので、どこが間違っているのか正確に理解するのは難しいです。

配列の終わりまで、または関数が特定の反復回数に達するまで、PHPループを実行するにはどうすればよいですか?

11
Joe W

あなたは正しい方向に進んでいます-カウントに達したらforeachループを終了できます。 foreachを使用して配列全体を反復処理し、指定された最大数に達しない場合は、配列全体を処理します。ただし、最大値に達した場合は、ループから飛び出してください。

$i = 0;
// Don't allow more than 5 if the array is bigger than 5
$maxiterations = 5;
foreach ($array as $data) {
  if ($i < $maxiterations) {
    if ($data['type'] != 'some_value') {
        $formatted_array[$i] = $data;
        $i++;
    }
  }
  else  {  // Jump out of the loop if we hit the maximum
     break;
  }
}
return $formatted_array; 
12

whileループを使用します。

$i = 0;
$limit = 10;
$count = count($array);

while ($i < $limit && $i < $count) {
   $data = $array[$i];
   // your code here
   ++$i;
}
16
meagar
$max_iterations = 100;

for ($i=1;$i <=$max_iterations;$i++)
{
    if ($i <= count($array))
        //do what u need
    else
        break;      
}
1
xbonez
            <?php foreach($usersinglevideodata1 as $userkey=>$uservalue){
                  for($i = 0; $i < 5; $i++){if($uservalue['com_video'.$i.''] !=""){ if ($Count < 3){?>
            <div class="col-sm-4">
                <iframe width="100%" height="120" src="https://www.youtube.com/embed/<?php echo youtube_id($uservalue['com_video'.$i.'']);?>" frameborder="0" allowfullscreen></iframe>
            </div>
            <?php $Count++;}else{break;}}}?>
          <?php }}?>

:あなたは正しい方向に進んでいます-カウントに達したらforeachループを終了できます。 foreachを使用して配列全体を反復処理し、指定された最大数に到達しない場合は、配列全体を処理します。ただし、最大値に達した場合は、ループから飛び出してください。

1
Chirayu Vyas
<?php
  $counter = 0;
  $new_array = array();
  while(count($new_array) <= $max_elements) {
    if($array[$counter]['type'] !== 'some_value') {
      $new_array[] = $array[$counter];
    }
  }
  return $new_array;
?>
0
DenMette

breakステートメントに精通していますか?

ユーザーはforeachループを実行し、条件内のコードを入力するたびにカウンター変数を維持します。必要な数の要素に達した場合、つまりカウンターが特定の値に達した場合は、ループから抜け出します。

<?php
$i=0;
foreach ($array as $data) {
    if ($data['type'] != 'some_value') {
        $formatted_array[$i] = $data;
        $i++;
        if($i>$maxAllowedElements) // here $i can serve as the counter and you can define //$maxAllowedElements to whatever value you like. 
         break;
    }
}
return $formatted_array; 
0
Shamim Hafiz