как ограничить этот цикл определенным числом? - PullRequest
1 голос
/ 30 января 2011

ниже от части цикла

foreach($dataSet as $cType => $cPercentage){ echo $cType ."=". $cPercentage; }

эти данные зависят от массива. я хочу запустить этот цикл только определенное количество раз. скажем 8 раз.

Ответы [ 7 ]

4 голосов
/ 30 января 2011
$nLoop = 0;
foreach($dataSet as $cType => $cPercentage){
  if ($nLoop++ == 8)
    break;
  echo $cType ."=". $cPercentage;
}
0 голосов
/ 30 января 2011

Если вы хотите сократить размер массива, вы можете использовать array_slice

чтобы ваш код выглядел так:

foreach(array_slice($dataSet, 0, 8) as $cType => $cPercentage){ echo $cType ."=". $cPercentage; }
0 голосов
/ 30 января 2011

Вы также можете использовать цикл другого типа, например, while

reset($dataSet);
$i = 8;
while((list($cType, $cPercentage) = each($dataSet)) && $i--) {
    echo $cType, ."=". $cPercentage;
}
reset($dataSet);

Ссылка: reset, each, list

Пояснение:

each возвращает ключ и значение элемента, на который указывает внутренний указатель массива, в качестве массива и увеличивает внутренний указатель. list присваивает массив ключей и значений двум переменным и возвращает массив. $i-- уменьшает переменную счетчика.
Цикл остановится, если в массиве больше не будет элементов (таким образом, массив, неявно возвращаемый list, будет пустым и оценивается в false) или если $i равно 0.

0 голосов
/ 30 января 2011

Попробуйте цикл while

$i = 0;
while($ds = each($dataSet) && $i < 8) {
   echo $ds['key']. '='.$ds['value'];
   $i++;
}
0 голосов
/ 30 января 2011

вы можете использовать цикл for, чтобы сделать это для вас

0 голосов
/ 30 января 2011

Это должно работать для числовых и ассоциативных массивов

$count = 0;
foreach($dataSet as $cType => $cPercentage) {
    echo $cType ."=". $cPercentage;
    if (++$count > 8) break;
}

Возможно, но не реальное преимущество

$cappedArray = array_slice($dataSet, 0, 8, true);
foreach($cappedArray as $cType => $cPercentage) {
    echo $cType ."=". $cPercentage;
}
0 голосов
/ 30 января 2011

Если вы имеете в виду «к числу», значит «8 раз»?Что вы могли бы сделать с помощью

 $i=0;   
foreach($dataSet as $cType => $cPercentage){
    if($i==8){break;} 
    $i++;
    echo $cType ."=". $cPercentage; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...