Учебные задачи - PHP. Задача №12
Primary tabs
Задача из списка
<?php /*Даны два массива по 20 элементов каждый. Сравните каждый 3-ий элемент 1-ого массива с каждый 2-ым элементов 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче.*/ function createArray() { for ($i = 1; $i <= 20; $i++) { $arr1[$i] = rand(-50, 50); $arr2[$i] = rand(-50, 50); } for ($i = 3, $j = 2; $i <= 20; $i += 3, $j += 2) { if ($arr1[$i] < $arr2[$j]) { echo "$arr1[$i] меньше $arr2[$j]<br>"; } elseif ($arr1[$i] > $arr2[$j]) { echo "$arr1[$i] больше $arr2[$j]<br>"; } else { echo "$arr1[$i] равно $arr2[$j]<br>"; } } } createArray();
/*
Почему при вызове функции compareItems() массивы не определяются? <?php $arr1 = array(); $arr2 = array(); function createArray() { for ($i = 1; $i <= 20; $i++) { $arr1[$i] = rand(-50, 50); $arr2[$i] = rand(-50, 50); } return $arr1; return $arr2; } function compareItems($arr1, $arr2) { for ($i = 3, $j = 2; $i <= 20; $i += 3, $j += 2) { if ($arr1[$i] < $arr2[$j]) { echo "$arr1[$i] меньше $arr2[$j]<br>"; } elseif ($arr1[$i] > $arr2[$j]) { echo "$arr1[$i] больше $arr2[$j]<br>"; } else { echo "$arr1[$i] равно $arr2[$j]<br>"; } } } compareItems(createArray());
*/
- Log in to post comments
- 6406 reads
math2
Tue, 10/22/2019 - 13:11
Permalink
/* Почему при вызове функции
vedro-compota
Tue, 10/22/2019 - 13:16
Permalink
недостижимый код
можно вернуть только одно значение, return будучи вызван один раз прекращает работу текущей функции.
потому что вы их туда не паредаёте, точнее вы передаете вызов функции, которая возвращает только один массив, а потому один массив и получаете.
_____________
матфак вгу и остальная классика =)
vedro-compota
Tue, 10/22/2019 - 14:05
Permalink
возможное исправление
выше @math2 привел возможное решение проблемы передачи двух параметров, но
более простым и понятным способом является следующий подхода:
Создавать же функцию, которая возвращает два массива в общем случае не эффективно, так как это очень частная задача и переиспользовать такой код трудно, даже если вы создаете такую функцию, она должна операться на функцию, которая возвращает один массив.
_____________
матфак вгу и остальная классика =)
den123
Tue, 10/22/2019 - 19:11
Permalink
Втрой вариант решения
Благодарю за ответы. Стало намного понятнее. По итогам у меня получилось так.
vedro-compota
Tue, 10/22/2019 - 23:26
Permalink
доработка
-- функция должна принимать массивы на вход, это сделает её универсальнее - ведь тогда можно будет передать массив неслучайных чисел, например. Это добавит гибкости
_____________
матфак вгу и остальная классика =)
den123
Wed, 10/23/2019 - 22:13
Permalink
Я правильно понял?
1. Я правильно понял комментарий? Если не так понял, то можно пояснить?
2. Не могу понять, зачем здесь перебирать все значения циклом foreach, когда можно просто напрямую к нужным значениям массива обращаться?
vedro-compota
Fri, 11/01/2019 - 22:53
Permalink
хорошо, засчитано
правильно
Ваше решение проще, чем перебор форичем, и м.б. даже лучше в данной ситуации.
Решение засчитано.
_____________
матфак вгу и остальная классика =)