Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
5 / 5 / 5
Регистрация: 07.07.2014
Сообщений: 559

Функция, находящая максимальное значение в массиве различной степени вложенности

04.08.2014, 12:15. Показов 1731. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, ребята ! Подскажите пожалуйста решение, никак не могу сообразить .. Остановился вот здесь ...


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$somearray = array(1,2,array(3,4,array(5,7)),8,array(1,2),array(10));
 
  function findMax($somearray) {
      $max = 0;
      foreach ($somearray as $value) {
        //print_r ($value);
          
       if ($max > $value) {
      }
      }
              $max = $value;
          }
      }
      
        return findMax();
       
    }
}
print_r (findMax($somearray()));
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2014, 12:15
Ответы с готовыми решениями:

Массивы различной вложенности
Всем привет. Если мне нужно пройтись по обычному массиву с одинаковой вложенностью, то я делаю так: for ($i = 0; $i <...

Рекурсивная функция, находящая значение n-й степени числа x
Здравствуйте! Помогите, пожалуйста, написать программу. Задание: Cоздать рекурсивную функцию PowerN(x,n) вещественного...

Найти максимальное значение в массиве любой вложенности
есть массив var arr2 = ,,0,1,2],3]; есть три решения данной задачи var arr2 = ,,0,1,2],3]; var arr = ,,0,1,2],3]; var...

7
SV
55 / 55 / 25
Регистрация: 03.08.2014
Сообщений: 258
04.08.2014, 12:30
Вы бы скобки с табуляцией расставили, для приличия, глаза сломать можно, и там куча лишних
Начните с простой логики - как должен работать алгоритм, а уж код написать это ерунда. Разберитесь для начала с этим, просто на словах
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
04.08.2014, 12:58
PHP
1
2
3
4
5
6
7
8
9
10
11
function  findMax($arr)
{
    $max = null;
    foreach($arr as $val)
    {
        $tmp = is_array($val) ? findMax($val) : $val;
        if($tmp > $max)
           $max = $tmp;
    }
    return $max;
}
1
5 / 5 / 5
Регистрация: 07.07.2014
Сообщений: 559
04.08.2014, 14:00  [ТС]
SV , спасибо! Ну я вот набросал кое-что, что только не пойму как теперь вытащить одно макс. значение ...

PHP
1
2
3
4
5
6
7
8
9
10
11
function findMax($somearray) {
    foreach ($somearray as $value) {
       if (!is_array($value)) {
           $max[] = $value;  
    } else {
            $max[] = findMax($somearray);
        }
    
    }
}     
print_r (findMax($somearray));
Добавлено через 34 минуты
KOPOJI , спасибо.
0
7 / 7 / 5
Регистрация: 17.03.2014
Сообщений: 77
04.08.2014, 20:30
Если кому не лень расшифруйте плз 6-ю строку из кода KOPOJI
0
5 / 5 / 5
Регистрация: 07.07.2014
Сообщений: 559
04.08.2014, 20:34  [ТС]
geee , там написан тернарный оператор.

PHP
1
2
3
4
5
if (is_array($val)) {
 $tmp = findMax($val);
   } else {
$tmp = $val;
}
1
7 / 7 / 5
Регистрация: 17.03.2014
Сообщений: 77
05.08.2014, 01:49
Еще задам вопросик, может кто ответит.

Вот этот код (написал в привычной мне форме без тернарного оператора):

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function  findMax($arr)
{
    $max = null;
    foreach($arr as $val)
    {
        if (is_array($val)) {
            $tmp = findMax($val);
        } else {
            $tmp = $val;
}
        if($tmp > $max)
           $max = $tmp;
    }
    return $max;
}
Он работает правильно.

Но если написать его так (вместо этого $tmp = findMax($val); сразу вызвав функцию):

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function  findMax($arr)
{
    $max = null;
    foreach($arr as $val)
    {
        if (is_array($val)) {
            findMax($val);
        } else {
            $tmp = $val;
}
        if($tmp > $max)
           $max = $tmp;
    }
    return $max;
}
Он работает некорректно. Не могу понять почему так происходит, ведь если там массив, то код который идет дальше по сути ничего не делает, только вызывает эту функцию в конце. Почему тогда если вызвать ее сразу он работает не правильно? Что я упускаю?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.08.2014, 09:28
Цитата Сообщение от geee Посмотреть сообщение
ведь если там массив, то код который идет дальше по сути ничего не делает
вот именно, что ничего не делает. Максимальный элемент во вложенных массивах никуда не сохраняется, следовательно, поиск выполняется в пределах первого массива
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2014, 09:28
Помогаю со студенческими работами здесь

Функция находящая наиболее часто встречающееся значение в массиве
Объявить массив из N=20 целых чисел, проинициализировать нулями. Функция processArray() должна: 1. заполнить массив случайными числами...

Функция находящая максимум в массиве
Создайте функцию для поиска максимального элемента одномерного массива и его номера. Добавлено через 16 минут что тут не так? :с ...

Функция: поменять местами минимальное и максимальное значение в массиве
Составить программу , в результате работы которой минимальное и максимальное значение массивов С (8) и К (8) меняются местами. Написать...

Функция находящая в целочисленном массиве числа начинающиеся с заданной цифры
Необходимо найти все числа в массиве которые начинаются с числа 3 с помощью функции. c++

Функция, находящая минимальный нечетный элемент в целочисленном одномерном массиве
Описать функцию целого типа min_elem(a, n), которая находит минимальный нечетный элемент в целочисленном одномерном массиве а размером n. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru