Re: Filling an array with random input doesn't quite work [message #185265 is a reply to message #185254] |
Sat, 15 March 2014 21:32 |
Ben Bacarisse
Messages: 82 Registered: November 2013
Karma:
|
Member |
|
|
Thomas 'PointedEars' Lahn <PointedEars(at)web(dot)de> writes:
> Daniel Pitts wrote:
>
>> On 3/12/14 10:18 AM, richard wrote:
>>> $x=1;
>>> while ($x<40){
>>> $yr=range(60,69);
>>> shuffle($yr);
>>> $ayr[$x]=$yr[$x];
>>> echo $ayr[$x]."<br>";
>>> $x++;
>>> }
>>>
>>> I am attempting to load an array based upon the range of numbers 60
>>> through 69.
>>> The array will have 40 items.
>>> This code produces 9 items just fine.
>>> The rest of the array is empty.
>>> What am I missing?
>>
>> for ($x = 1; $x < 40; ++$x) {
>> $ayr[$x] = rand(60, 69);
>> }
>>
>> So much simpler, more efficient, and actually correct.
>
> No, this will produce an array of only 39 elements, assuming there was not
> already one. This can be easily fixed, of course.
>
> Still,
>
> $keys = range(1, 40);
> $ayr = array_combine($keys, array_map(function () {
> return rand(60, 69);
> }, $keys)));
>
> is much more elegant :)
Yes, but it's a shame about the extra ')'. I think
$ayr = array_map(function () { return rand(60, 69); },
array_fill(1, 40, null));
is a little simpler.
--
Ben.
|
|
|