Задача №7. --Заполнение массива случайными числами
Primary tabs
Задача из списка.
Задать массив из 7-ми элементов через предварительное описание типа, заполнить его случайными значениями в одном цикле, а в другом цикле вывести эти значения на экран.
function arr_n($N)
{
$mas[] = $N;
for($i = 0; $i < $N; $i++) {
$mas[$i] = rand(-100, 100);//заполняем случайными значениями.
}
for($j = 0; $j < $N; $j++) {
echo $mas[$j], "<br>";//выводим массив случайных значений.
}
}
$N = 7;
arr_n($N);
- Log in to post comments
- 14711 reads
math2
Mon, 07/31/2017 - 22:30
Permalink
<?php
<?php $N = 7; $mas[] = $N; print_r($mas);выведет
Array ( [0] => 7 )Можно построить массив нужной длины функцией array_pad:
Результат:
Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 )А потом можно использовать цикл foreach.
sid
Tue, 08/01/2017 - 21:37
Permalink
Использовал функцию array_pad
Использовал функцию array_pad.
<?php function arr_n($N) { $mas = array_pad([], $N, 0); for($i = 0; $i < count($mas); $i++) { $mas[$i] = rand(-1000, 1000); } for($i = 0; $i < count($mas); $i++) { echo $mas[$i], "<br>"; } } $N = 7; arr_n($N); ?>sid
Tue, 08/01/2017 - 21:49
Permalink
Можно так.
Можно так.
<?php function arr_n($N) { $mas = array_pad([], $N, 0); for($i = 0; $i < count($mas); $i++) { $mas[$i] = rand(-1000, 1000); } foreach($mas as $i) { echo $i, "<br>"; } } $N = 7; arr_n($N); ?>vedro-compota
Tue, 08/01/2017 - 21:52
Permalink
форматирование
for($i = 0; $i < count($mas); $i++) { $mas[$i] = rand(-1000, 1000); } foreach($mas as $i) { echo $i, "<br>"; }-- здесь и на пост выше for и foreach должны быть на одном уровне, а у вас на разных.
_____________
матфак вгу и остальная классика =)
sid
Tue, 08/01/2017 - 21:54
Permalink
Исправил.
Исправил.
math2
Wed, 08/02/2017 - 17:38
Permalink
Можно использовать foreach и
Можно использовать foreach и в первом цикле. Тогда нам потребуется передача по ссылке. & нужен, чтобы переменная \$a указывала на элемент массива, а не была его копией.
<?php function arr_n($N) { $mas = array_pad([], $N, 0); foreach($mas as &$i) { $i = rand(-1000, 1000); } foreach($mas as $i) { echo $i, "<br>"; } } $N = 7; arr_n($N); ?>vedro-compota
Wed, 08/02/2017 - 18:25
Permalink
foreach по ссылке
Отмечу, что нужно помнить и об эффектах которые возникают при передаче переменной в foreach по ссылке: http://fkn.ktu10.com/?q=node/8802
_____________
матфак вгу и остальная классика =)
sid
Wed, 08/02/2017 - 20:22
Permalink
Как это можно отследить, или
Как это можно отследить, или нужно просто отказаться от использования ссылки?
vedro-compota
Sat, 08/05/2017 - 14:56
Permalink
что и как
Отслеживать несложно достаточно просто запустить код -- вы убедитесь, что последний и предпоследний элемент в таком массиве после прогона двух циклов будут совпадать. Поэксперементируйте запуская подобный код. (один раз перебираете передавая переменную по ссылке, а второй раз по значению) и распечатывайте массив (print_r()) после каждого витка в обоих циклах.
Варианты:
-- то есть фактически удаление переменной перед началом перебора массива вторым циклом. Это нужно чтобы в переменной перестала храниться ссылка, и чтобы второй цикл передавал в неё значение.
foreach($mas as &$i) { $i = rand(-1000, 1000); } foreach($mas as $i) { echo $i, "<br>"; }а так:
foreach($mas as $key => $i) { $mas[$key] = rand(-1000, 1000); // обращение по текущему ключу } foreach($mas as $i) { echo $i, "<br>"; }_____________
матфак вгу и остальная классика =)
math2
Sun, 08/06/2017 - 00:47
Permalink
Здесь можно было бы просто не
Здесь можно было бы просто не использовать \$i во втором цикле.
<?php function arr_n($N) { $mas = array_pad([], $N, 0); foreach($mas as &$i) { $i = rand(-1000, 1000); } foreach($mas as $j) { echo $j, "\n"; } } $N = 7; arr_n($N); ?>Но лучше использовать unset:
<?php function arr_n($N) { $mas = array_pad([], $N, 0); foreach($mas as &$i) { $i = rand(-1000, 1000); } unset($i); foreach($mas as $i) { echo $i, "\n"; } } $N = 7; arr_n($N); ?>