<?php // генератор массива MxM заполненный случайным образом числами от 0 до 9 $count = 5; //Количество строк и столбцов $min = 0; $max = 9; //Функция получения рандомной матрицы function getRandomNumbers($min, $max, $count) { for($i=0;$i<$count;++$i){ for($j=0;$j<$count;++$j){ } } return $array; } //Преобразуем матрицу к необходимому диапазону чисел $matrix = getRandomNumbers($min, $max, $count); //Смотрю полученный массив //Выводим исходный полученный массив в табличный вид echo '<table border="1" cellpadding="5">'; echo '<tr>'; foreach($matrix[$row] as $value) { echo '<td>'.$value.'</td>'; } echo '</tr>'; } echo '</table>'; /* Задание: Сформировать новый массив по правилам: 1) Если в строке встречаются одинаковые числа, то они заменяются на результат произведения этого числа на количество повторений. 2) Если в столбце встречаются одинаковые числа, то они заменяются на результат произведения этого числа на количество повторений. 3) Если число встречается и в строке, и в столбце, то оно заменяется на сумму произведения этого числа на количество повторений в строке и произведения этого числа на количество повторений в столбце. 4) Если число встречает в строке и столбце один раз, то оно переносится без изменений. */ // Транспонируем матрицу и выводим матрицу по заданию foreach ($matrix as $row => $arr) { foreach ($arr as $key => $value){ // И вот тут я затупил как перебрать многомерный массив и применить условия. } } ?>
Вопросы есть по многомерным массивам, как правильно находить элементы в массивах и производить с ними действия, например вот что у меня получилось решая задачку из учебника. Первая задача была написать генератор многомерного массива МхМ — получилось. Вторая транспонировать полученный массив.
Для обучающих, на сайтах php.net круто все расписано, но все приходится понимать через шишки, а вот интересная картинка которая откидывает некоторые шишки сразу — визуализация это сила в обучении:
#2
1 ноября 2019 в 16:44
Решение не нужно — это учеба, хочу сделать сам, нужно ссылки на почитать, где описано нормально про многомерные или подсказки — но не решение.
#3
1 ноября 2019 в 18:31
Сегодня в 03:58
#4
1 ноября 2019 в 18:38
Ris, Спасибо друг, я это смотрел — и применил этот способ при выводе рандомного массива, а вот как теперь отобрать нужный элемент и преобразовать не втыкаю… Условия я изучил, а вот как применять условия в многомерных массивах с выборкой по строке и столбцу, пока загадка для меня.
#5
1 ноября 2019 в 18:50
Отобрать нужный элемент по значению или по ключу?а вот как теперь отобрать нужный элемент и преобразовать не втыкаю.
Всякие array_column и array_search можно попробовать.
www.php.net/manual/ru/ref.array.php
В задаче по значению, получается функция точно по столбцу, но на счет search пока не уверен, я понял что она ищет по первому элементу — но пока не могу представить как оно происходит, если это многомерный массив — это меня путает..
Возможно не поразмыслил, над твоей подсказкой… Еще намекни почему search? если уверен — что нужна в этом действии, я пока сильно туплю ))).
Возможно не поразмыслил, над твоей подсказкой… Еще намекни почему search? если уверен — что нужна в этом действии, я пока сильно туплю ))).
#7
1 ноября 2019 в 19:42
jorgovich,
Я запустил ваш код и получил некую таблицу:
<table border="1" cellpadding="5"><tr><td>4</td><td>4</td><td>8</td><td>1</td><td>8</td></tr><tr><td>4</td><td>9</td><td>7</td><td>9</td><td>8</td></tr><tr><td>0</td><td>8</td><td>1</td><td>7</td><td>3</td></tr><tr><td>2</td><td>8</td><td>2</td><td>0</td><td>3</td></tr><tr><td>6</td><td>1</td><td>7</td><td>3</td><td>8</td></tr></table>
Мне интересно, что предполагается получить в результате?
Я запустил ваш код и получил некую таблицу:
<table border="1" cellpadding="5"><tr><td>4</td><td>4</td><td>8</td><td>1</td><td>8</td></tr><tr><td>4</td><td>9</td><td>7</td><td>9</td><td>8</td></tr><tr><td>0</td><td>8</td><td>1</td><td>7</td><td>3</td></tr><tr><td>2</td><td>8</td><td>2</td><td>0</td><td>3</td></tr><tr><td>6</td><td>1</td><td>7</td><td>3</td><td>8</td></tr></table>
Мне интересно, что предполагается получить в результате?
#8
1 ноября 2019 в 19:48
Ris, Там в комментах все условия задания…
jorgovich,
Почитал.
Есть такая штука, как array_count_values
Так вот if(array_count_values($value) > 1){$value = $value * array_count_values($value);}… ну и так далее… ну и так далее
Почитал.
Есть такая штука, как array_count_values
Так вот if(array_count_values($value) > 1){$value = $value * array_count_values($value);}… ну и так далее… ну и так далее
#10
1 ноября 2019 в 19:57
Спасибо, мельком глянул — то что нужно! Я обязательно посмотрю, у меня таймаут, время баеньки, завтра разберусь — Ris, — мое почтение и уважение! БОЛЬШОЕ СПАСИБО!
#11
1 ноября 2019 в 20:07
jorgovich,
Пожалуйста.
И я вовсе не специалист по массивам. Просто задал в яндексе "найти совпадения в массиве php".
Пожалуйста.
И я вовсе не специалист по массивам. Просто задал в яндексе "найти совпадения в массиве php".
#12
7 ноября 2019 в 11:19
Почти решил, что означает ошибка:
Warning: array_count_values() expects exactly 1 parameter, 2 given
Warning: array_count_values() expects exactly 1 parameter, 2 given
#13
7 ноября 2019 в 11:25
Ожидался один параметр, а прилетело два. У вас должно быть array_count_values($param), а в реальности так array_count_values($param1, $param2)expects exactly 1 parameter, 2 given
#14
7 ноября 2019 в 11:38
Loadырь, понял попробую по другому.