Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 07.03.2016
Сообщений: 7

Задачка с массивами: новые одномерные массивы из 1 многомерного массива

15.01.2017, 03:20. Показов 802. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста!
Нужно более простое решение чем было

Есть вот такой массив:
PHP
1
2
3
4
5
6
7
$array = array (
'1'=>'1',
'2'=>'2',
'3'=>'3',
'4'=>array('4','5','6','7'),
'5'=>array('8','9') 
);
Т.к. 4 элемент - это массив в котором больше всего элементов, то я считаю его кол-во и записываю в переменную $m:
$m = 4;

А теперь в цикле мне надо сформировать вот такой новый массив:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    if ($m != 1) {
        for ($i = 0; $i < $m; $i++) {
        
        //первая итерация:
        $new_array = array ('1'=>'1', '2'=>'2', '3'=>'3',
                            '4'=>'4', '5'=>'8');
        
        //... 4-ая итерация:
        $new_array = array ('1'=>'1', '2'=>'2', '3'=>'3',
                             '4'=>'7', '5'=>null);
        
        //Т.е. каждую итерацию меняются 4 и 5 элементы, т.к. 5 массив меньше 4, то добавляется null
        }
    }
До этого у меня было вот такое решение:

Я каждый элемент в массиве $array дублировал до нужного кол-во раз (до $m = 4), кроме 5-ого эл-та - туда писал null:

PHP
1
2
3
4
5
6
    if ($m != 1) {
        foreach ($array as $k => &$v) {
            if ( is_array ($v) ) $v = array_pad($v, $m, null);
            else $v = array_fill(0, $m, $v);
        }
    }
А потом в цикле for считывал вот так:

PHP
1
2
3
    for ($i = 0; $i < $m; $i++) {
    $new_array = array_column ($array, $i);//с каждого массива выбираю по одному значению
    }
Так вот, можно как-то обойтись без array_pad и array_fill и сформировать нужный массив сразу в цикле for?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.01.2017, 03:20
Ответы с готовыми решениями:

Задачка(одномерные массивы и матрицы)
Уважаемые форумчане, помогите пожалуйста написать программку... Суть программы: &quot;Дан целочисленный массив из N элементов. Если...

Одномерные массивы. Образуйте массив из элементов массива А(М), каждый из которых больше любого элемента массива B (N)
Даны два одномерных массива А(М) и B (N). Образуйте массив из элементов массива А(М), каждый из которых больше любого элемента массива B...

Найти наименьший элемент массива X среди тех, которые не являются элементами массива Y(X,Y-одномерные массивы)
Всем добрый день..помогите решить 6 задач .ничего не понимаю в этом языке поэтому где можно и нужно пишите пожалуйста комментарии по ходу...

2
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
15.01.2017, 04:50
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$array     = array(
    '1' => '1',
    '2' => '2',
    '3' => '3',
    '4' => array('4', '5', '6', '7'),
    '5' => array('8', '9')
);
$maxLength = 0;
$keys      = array();
foreach ($array as $key => $value)
{
        if (is_array($value))
        {
                $length = count($value);
                if ($length > $maxLength)
                {
                        $maxLength  = $length;
                        $keys[$key] = $length;
                }
                else
                {
                        $array[$key] = null;
                }
 
        }
}
 
foreach ($keys as $key => $value)
{
        $array[$key] = $value < $maxLength ? null : $array[$key][--$value];
}
 
var_dump($array);
Так лучше будет
1
0 / 0 / 1
Регистрация: 07.03.2016
Сообщений: 7
15.01.2017, 05:21  [ТС]
Fedor Vlasenko, переформулирую свой вопрос применительно к вашему коду:
В var_dump($array); должны быть такие данные:
PHP
1
2
3
4
5
6
array (
array ('1'=>'1', '2'=>'2', '3'=>'3','4'=>'4', '5'=>'8');
array ('1'=>'1', '2'=>'2', '3'=>'3','4'=>'5', '5'=>'9');
array ('1'=>'1', '2'=>'2', '3'=>'3','4'=>'6', '5'=>null);
array ('1'=>'1', '2'=>'2', '3'=>'3','4'=>'7', '5'=>null);
)
Но я вместо формирования такого многомерного массива, хотел налету создавать, например:
PHP
1
array ('1'=>'1', '2'=>'2', '3'=>'3','4'=>'4', '5'=>'8');
произвести с ним манипуляции и перейти к следующему:
PHP
1
array ('1'=>'1', '2'=>'2', '3'=>'3','4'=>'5', '5'=>'9');
и так далее.

А так конечно, спасибо, за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2017, 05:21
Помогаю со студенческими работами здесь

Одномерные массивы Х и У, вычислить эл-ты массива Т
При заданных одномерных массивах Х и У одинаковой длинны вычислить элементы массива Т, первый элемент которого равен единице, а все...

Одномерные массивы. Изменение исходного массива
В массив записали информацию о высоте над уровнем моря двадцати горных вершин мира. Данные записаны в порядке, соответствующем алфавитному...

Одномерные массивы A B образование нового массива C
Даны два одномерных массива А(8 элементов) и В(5 элементов) сами числа вводим с клавиатуры. Образуйте новый массив из элементов массива...

Одномерные массивы. Вставка, удаление элементов массива. Перестановка элементов массива. Сортировка массива методом пузырька
Помогите пожалуйста! Дан массив, состоящий из N букв латинского алфавита а) Заполнить массив датчиком случайных чисел б)...

Одномерные Массивы, Заполнение массива с параллельной идентификацией
Здравствуйте, у меня такая задача, Студент сдал 7 экзаменов по программированию,Написать программу которая определяет какой предмет...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru