PHP version >=5.5
You want to get a value in array. The first, you need to store that array into memory. And then, you will loop that array to select item(value) you need.
If your array is big, maybe that is reason memory overflow.
Generator will permit you access to item of array via Generator class without to build that array.
public function getDataRam($max=10)
{
$array = [];
for ($i = 1; $i < $max; $i++) {
$array[] = $i;
}
return $array;
}
Get 15 rows data
foreach (getDataRam(15) as $range) {
echo "Dataset {$range} <br>";
}
Run test: http://laravel70.local/generator/get?max=15
Results
Dataset 1
Dataset 2
Dataset 3
Dataset 4
Dataset 5
Dataset 6
Dataset 7
Dataset 8
Dataset 9
Dataset 10
Dataset 11
Dataset 12
Dataset 13
Dataset 14
Run test: http://laravel70.local/generator/get?max=PHP_INT_MAX
Results: because of above array can't enough memory to store
Symfony\Component\ErrorHandler\Error\FatalError
Allowed memory size of 33554432 bytes exhausted (tried to allocate 16777224 bytes)
public function getDataGenerator($max=10)
{
for ($i = 1; $i < $max; $i++) {
yield $i;
}
}
foreach (getDataGenerator(15) as $range) {
echo "Dataset {$range} <br>";
}
Call 15 rows: http://laravel70.local/generator/get-generator?max=15
Results
Dataset 1
Dataset 2
Dataset 3
Dataset 4
Dataset 5
Dataset 6
Dataset 7
Dataset 8
Dataset 9
Dataset 10
Dataset 11
Dataset 12
Dataset 13
Dataset 14
Call big rows: http://laravel70.local/generator/get-generator?max=PHP_INT_MAX
Results
Dataset 1
Dataset 2
Dataset 3
Dataset 4
Dataset 5
Dataset 6
Dataset 7
Dataset 8
Dataset 9
Dataset 10
Dataset 11
Dataset 12
Dataset 13
Dataset 14
....
....