below is from part of a loop
foreach($dataSet as $cType => $cPercentage){ echo $cType ."=". $cPercentage; }
this out put datas depend on array. what I want is I want to run this loop to only a particular number of times. say 8 times.
$nLoop = 0;
foreach($dataSet as $cType => $cPercentage){
if ($nLoop++ == 8)
break;
echo $cType ."=". $cPercentage;
}
If you mean by "to a number", do you mean like "8 times"? That you could do by
$i=0;
foreach($dataSet as $cType => $cPercentage){
if($i==8){break;}
$i++;
echo $cType ."=". $cPercentage;
}
This should work for numeric & associative arrays
$count = 0;
foreach($dataSet as $cType => $cPercentage) {
echo $cType ."=". $cPercentage;
if (++$count > 8) break;
}
Possibly, but not real advantage
$cappedArray = array_slice($dataSet, 0, 8, true);
foreach($cappedArray as $cType => $cPercentage) {
echo $cType ."=". $cPercentage;
}
you can use the for loop to do this for you
Try a while loop
$i = 0;
while($ds = each($dataSet) && $i < 8) {
echo $ds['key']. '='.$ds['value'];
$i++;
}
You can also use another type of loop, e.g. while
:
reset($dataSet);
$i = 8;
while((list($cType, $cPercentage) = each($dataSet)) && $i--) {
echo $cType, ."=". $cPercentage;
}
reset($dataSet);
Explanation:
each
returns the key and value of the item the internal array pointer points to as array and advances the internal pointer. list
assignes the array of key and value to two variables and returns the array. $i--
decrements the counter variable.
The loop will stop if either there are no elements in the array anymore (thus the array implicitly returned by list
will be empty and evaluate to false
) or if $i
is 0
.
If you want to truncate size of array you can use array_slice
so your code would look like this:
foreach(array_slice($dataSet, 0, 8) as $cType => $cPercentage){ echo $cType ."=". $cPercentage; }