<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Двумерные массивы из курса
08.09.2013 15:22:38 Двумерные массивы из курса Сообщение #1
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

Добрый день. Михаил, из Вашего курса по php и mysql о двумерных массивах, Вы, по мимо основного задания, рекомендовали написать скрипт который бы считал среднее арифметическое число двумерного массива, вот что у меня получилось:

function arifIntDoubleArray($array){
for($i = 0; $i < count($array); $i++){
for($j = 0; $j < count($array[$i]); $j++){
// Подчет суммы всех чисел во вложенных массивах
$sum += $array[$i][$j];
// Количество итерации цикла
$count += count($array[$i][$j]);
if($i + 1 == count($array) && $j + 1 == count($array[$i]))
// Деление суммы всех чисел на количество итерации раз вложенного цикла
$sum = $sum / $count;
}
}
return $sum;
}

Все работает, но вот из-за того что $i и $j получают начальное значение 0 (чтобы перебирать массив начиная с индекса 0)
приходиться 1. создавать

// Количество итерации цикла
$count += count($array[$i][$j]);

для дальнейшего деления на него.
2.писать условие

if($i + 1 == count($array) && $j + 1 == count($array[$i]))

где к переменным $i и $j прибавлять 1, для того чтобы $i и $j были равны количеству длине массива.
Скажите, вот это вот все приветствуется или решается по другому? Если по другому, то как? Спасибо.
Профиль
10.09.2013 10:50:35 Двумерные массивы из курса Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, всё так. Разумеется, так как индексация у нас идет с нуля, нужно принимать меры и добавлять это смещение на единичку.
Профиль
10.09.2013 15:27:18 Двумерные массивы из курса Сообщение #3
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

И вот еще Вам вопрос. по окончанию первого раздела Вашего курса (основы) Вы даете задание написать функцию которая бы принимала массив с любыми числами и сортировала их, в зависимости от булевской переменой, по возрастанию или по убыванию. как это реализовать? дополнительных знаний точно не нужно применять? просто потратил уже более 4 часов думая как сделать это, но к сожалению так и не пришел к тому методу который бы мог осуществить данные действия над массивом.
Профиль
11.09.2013 17:51:20 Двумерные массивы из курса Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

А в чём именно тут сложность? С проверкой условия этой булевской переменной, я полагаю, проблем быть не должно. Остается просто сделать два варианта сортировки.
Профиль
12.09.2013 04:17:59 Двумерные массивы из курса Сообщение #5
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

Вот именно с сортировкой проблемы. 1 - это сохранять ли индексы. 2 - весь процесс сортировки должен происходить с одним циклом вложенный в другой, наверное так:


function sortArray($array, $boolean = true){
if($boolean == true){
for ($i = 0; $i < count($array); $i++){
for($j = 0; $j < count($array); $j++){
if(){

}else{

}
}
}
}
}

Что тогда должно быть в условии?

if($array[$i] > $array[$j]){
$array[$i] = $array[$j];
}

а массив выглядит допустим так:

$list = array(7,3,5,-2);

Тогда с тем условием что написано будет находить следующее меньшее число в цикле и записывать его на место предыдущего, то есть 7-ку поменяет на 3-ку сохраняя индекс. и отсюда вопрос, как в этом цикле, 2-м, перебрать весь массив, чтобы вместо 7-ки получи -2, то есть получили мы следующее меньшее число, оно бралось и проверялось на остальные значения массива? запускать еще один цикл? и куда передать значения, в моем случае, 7-ку? в новый массив? код писал тут и не тестировал его, надеюсь понятно.
Просмотрев 1 урок 2-го раздела смог не много понять принцип сортировки

function delRepeatElementArray($array){
if(is_array($array)){
foreach ($array as $k => $v) {
foreach ($array as $key => $value){
if($k != $key && $k < $key){
if($v == $value){
unset($array[$key]);
}
}
}
}
}else return false;
return $array;
}

но к сожалению это ничем не помогло решить проблему.
Профиль
12.09.2013 20:23:55 Двумерные массивы из курса Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Вот и разберитесь для начала просто с сортировкой. Пусть этот условный оператор запускает два совершенно разных метода сортировки, для начала.
Профиль
13.09.2013 02:32:47 Двумерные массивы из курса Сообщение #7
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

без рекурсии справится тут можно?
Профиль
13.09.2013 18:07:44 Двумерные массивы из курса Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, конечно.
Профиль
30.08.2016 13:19:21 Двумерные массивы из курса Сообщение #9
WarBear

WarBear

Новичок

Новичок

Дата регистрации:
30.08.2016 12:57:55

Сообщений: 1

Среднее арифметическое двумерного массива:

$arr = array(array(11, 12, 13, 14, 15),
array(21, 22, 23, 24, 25),
array(31, 32, 33, 34, 35),
array(41, 42, 43, 44, 45),
array(51, 52, 53, 54, 55));

function arifmArray($arr) {
 for ($i = 0; $i < count($arr) ; $i++) { //Перебираем массив первого уровня
 $c+=count($arr[$i]);//Подсчёт количества элементов в массиве

 for ($j = 0; $j < count($arr[$i]); $j++) { //Перебираем массив второго уровня
echo "Элемент $i$j ". $arr[$i][$j]." ";
$sum2 += $arr[$i][$j];// Подчет суммы всех чисел во вложенных массивах
 }
 echo "<table></table>";
 }
 $arifm = $sum2/$c;
 echo "Количества элементов в массиве равно ".$c."<br />";//Kоличества элементов в массиве = 25
 echo "Сумма всех чисел массива равна ".$sum2."<br />";//Сумма = 825
 echo "Среднее арифметическое массива равно ".$arifm."<br />";
}
arifmArray($arr);


Сделал по своему. Надеюсь данное решение правильно?.
Профиль