Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 102

Слияние двух массивов

08.01.2014, 15:15. Показов 1288. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
никак не могу придумать, как объединить ассоциативный и индексный массив в двумерный массив.

допустим у меня есть два массива:
PHP
1
2
3
4
$arr1 = array(1, 2, 3);
$arr2 = array("first" => "test 1",
               "second" => "test 2",
           "third" => "test 3");
результат я хочу вот такой:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Array
    (
        [1] => Array
            (
                [first] => test 1
                [second] =>  test 2
                [third] =>  test 3
            )
     
        [2] => Array
            (
                [first] => test 1
                [second] =>  test 2
                [third] =>  test 3
             )
     
        [3] => Array
            (
                [first] => test 1
                [second] =>  test 2
                [third] =>  test 3
            )
     
    )
все мои манипуляции со сложениями в цикле for или функцией array_merge выдают ошибки
вот некоторые из них:
PHP
1
2
3
4
5
6
7
8
9
10
// Argument #1 is not an array
$arr3 = array();
for ($i = 0; $i <= count($arr1); $i++) {
    $arr3 = array_merge($arr1[$i], $arr2);
}
 
//Allowed memory size of 268435456 bytes exhausted (tried to allocate 71 bytes)
for ($i = 0; $i <= count($arr1); $i++) {
    $arr1[$i] = $arr2;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2014, 15:15
Ответы с готовыми решениями:

Слияние двух массивов
Доброго времени суток! Нужно сделать слияние двух массивов, есть функция array_merge - которая к указанному массиву сливает второй массив...

Поочередное слияние двух массивов
Здравствуйте, имеются два массива: $arr1 = ; $arr2 = ; Нужно получить третий: ; Добавлено через 9 минут PS. Массивы могут...

Слияние массивов
Дано (структура массивов): Array ( =&gt; Array ( KEY1 =&gt; string1 KEY2 =&gt; string2 ...

5
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
08.01.2014, 15:47
PHP
1
2
3
$newArray = array();
foreach ($arr1 as $item)
    $newArray[$item] = $arr2;
1
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 102
08.01.2014, 15:53  [ТС]
честно.. аж стыдно(
Спасибо!
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
09.01.2014, 16:22
array_fill_keys()
1
4 / 3 / 2
Регистрация: 03.09.2013
Сообщений: 141
12.09.2018, 21:48
Здравствуйте.
У меня такая конструкция:
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
34
 // осуществляем поиск всех мастеров, array()
        $masterArr = $this->model->viewAllMasterModel();
        // перебором вычисляем какие есть в таблице записей ....
        foreach ($masterArr as $val) {
            $masterId = $val['id'];
            $val1 = $this->model->s1Model($masterId,$location);
 
            // если массив '$val1' не пустой
            if ($val1) {
                // debug($val1);
                foreach ($val1 as $item) {
                    $masterIdNew =$item['masterid'];
                    $res = $this->model->test1($masterIdNew,$location,$currentDate);
                    foreach ($res as $value) {
                        // debug($value);
 
                        if ($value['recordstatus'] != 2) {
                            $masterId = $value['masterid'];
                            $date = $value['date'];
                            $minTime = $this->model->minTimeModel($masterId, $date);
                            $min = $minTime[0]['timemin'];
                            $maxTime = $this->model->maxTimeModel($masterId, $date);
                            $max = $maxTime[0]['timemax'];
                            $timeblock = ['min' => $min, 'max' => $max];
                            $value += $timeblock;
                        }
                        // debug($value);
                    }
 
 
                }
                // TODO
            }
        }
debug($val1); дает результат:
Это вывод специалистов, соответствующих выборке. От этих массивов будут строиться строки во вьюхе
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Array
(
    [0] => Array
        (
            [recordstatus] => 0
            [masterid] => 44
            [date] => 2018-09-14
            [dateview] => 14.09.2018
            [recordtime] => 
            [sity] => 1
            [id] => 44
            [master_fio] => rrrr2rrrrr
            [master_img] => 44_small.jpg
        )
 
)
Array
(
    [0] => Array
        (
            [recordstatus] => 0
            [masterid] => 16
            [date] => 2018-09-13
            [dateview] => 13.09.2018
            [recordtime] => 
            [sity] => 1
            [id] => 16
            [master_fio] => АЛЕНА ОСТРОВЕРХОВА
            [master_img] => master-16.jpg
        )
 
)
Array
(
    [0] => Array
        (
            [recordstatus] => 0
            [masterid] => 22
            [date] => 2018-09-25
            [dateview] => 25.09.2018
            [recordtime] => 
            [sity] => 1
            [id] => 22
            [master_fio] => МАРИЯ НЕВОЛИНА 
            [master_img] => master-22.jpg
        )
 
)
debug($value); дает результат:
Это вывод сгруппированных дат и времен по каждому специалисту
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Array
(
    [recordstatus] => 0
    [masterid] => 44
    [date] => 2018-09-14
    [dateview] => 14.09.2018
    [sity] => 1
    [recordtime] => 
    [id] => 1
    [display] => Мужской зал
    [gategory] => location
    [min] => 2018-09-14 04:00:00
    [max] => 2018-09-14 06:40:00
)
Array
(
    [recordstatus] => 0
    [masterid] => 44
    [date] => 2018-09-15
    [dateview] => 15.09.2018
    [sity] => 1
    [recordtime] => 
    [id] => 1
    [display] => Мужской зал
    [gategory] => location
    [min] => 2018-09-15 04:00:00
    [max] => 2018-09-15 06:00:00
)
Array
(
    [recordstatus] => 0
    [masterid] => 44
    [date] => 2018-09-16
    [dateview] => 16.09.2018
    [sity] => 1
    [recordtime] => 
    [id] => 1
    [display] => Мужской зал
    [gategory] => location
    [min] => 2018-09-16 05:20:00
    [max] => 2018-09-16 19:00:00
)
Array
(
    [recordstatus] => 2
    [masterid] => 44
    [date] => 2018-09-16
    [dateview] => 16.09.2018
    [sity] => 1
    [recordtime] => 10:10 - 10:20
    [id] => 1
    [display] => Мужской зал
    [gategory] => location
)
Array
(
    [recordstatus] => 0
    [masterid] => 16
    [date] => 2018-09-13
    [dateview] => 13.09.2018
    [sity] => 1
    [recordtime] => 
    [id] => 1
    [display] => Мужской зал
    [gategory] => location
    [min] => 2018-09-13 05:40:00
    [max] => 2018-09-13 06:50:00
)
Array
(
    [recordstatus] => 0
    [masterid] => 22
    [date] => 2018-09-25
    [dateview] => 25.09.2018
    [sity] => 1
    [recordtime] => 
    [id] => 1
    [display] => Мужской зал
    [gategory] => location
    [min] => 2018-09-25 04:00:00
    [max] => 2018-09-25 04:30:00
)
Так вот объединить нужно так, чтобы эти конструкции слились в три массива для вьюхи, где в следующем div'е я выведу принадлежащие каждому специалисту соответствующие группы дат
По сути нужно превратить в вид как в этой теме
Хожу где-то около, глаза замылил и туплю. создаю пустые, пытаюсь прикрутить, но не получается
0
4 / 3 / 2
Регистрация: 03.09.2013
Сообщений: 141
13.09.2018, 13:41
В общем, неверно проходы прописал ранее . надо так:
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
 $arr1 = array();
        $arr2 = array();
 
        foreach ($masterArr as $val1) {
            $masterId = $val1['id'];
            // по Id мастера запрашиваем, есть ли из найденных мастеров записи в таблице записей,
            // соответствующие запросу
            $val2 = $this->model->s1Model($masterId,$location);
 
            // если массив $val2 не пустой, вытаскиваем данные мастера и формируем массив с данными
            if ($val2) {
                $arr1[] = $val2;
            }
        }
        debug($arr1); // ok
 
        // теперь по каждому проходу массива с мастером
        // будем подтягивать соответствующие записи
 
        foreach ($arr1 as $val3) {
            $masterIdNew = $val3[0]['masterid']; // id мастера из массива $arr1
            $res = $this->model->test1($masterIdNew,$location,$currentDate);
            // debug($res);
            $arr2[] = $res;
        }
        debug($arr2); // ok
Первый debug выводит
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
34
35
36
37
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-19
                    [dateview] => 19.09.2018
                    [recordtime] => 
                    [sity] => 2
                    [id] => 44
                    [master_fio] => rrrr2rrrrr
                    [master_img] => 44_small.jpg
                )
 
        )
 
    [1] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 25
                    [date] => 2018-09-19
                    [dateview] => 19.09.2018
                    [recordtime] => 
                    [sity] => 2
                    [id] => 25
                    [master_fio] => ЕКАТЕРИНА ВАСЕВА
                    [master_img] => master-25.jpg
                )
 
        )
 
)
Второй debug выводит
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-19
                    [dateview] => 19.09.2018
                    [sity] => 2
                    [recordtime] => 
                    [id] => 2
                    [display] => VIP зал
                    [gategory] => location
                )
 
            [1] => Array
                (
                    [recordstatus] => 2
                    [masterid] => 44
                    [date] => 2018-09-19
                    [dateview] => 19.09.2018
                    [sity] => 2
                    [recordtime] => 09:00 - 09:50
                    [id] => 2
                    [display] => VIP зал
                    [gategory] => location
                )
 
            [2] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-20
                    [dateview] => 20.09.2018
                    [sity] => 2
                    [recordtime] => 
                    [id] => 2
                    [display] => VIP зал
                    [gategory] => location
                )
 
        )
 
    [1] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 25
                    [date] => 2018-09-19
                    [dateview] => 19.09.2018
                    [sity] => 2
                    [recordtime] => 
                    [id] => 2
                    [display] => VIP зал
                    [gategory] => location
                )
 
        )
 
)
в принципе, вопрос тот же остался, как привинтить к проходу первого массива с мастером [masterid] => 44 значения в датами из второго где также [masterid] => 44

Добавлено через 7 минут
Объединить подмассивы двух массивов по ключу
там был ответ
PHP
1
2
3
4
5
$result = [];
foreach ($arr1 as $k => $v) {
    $result[$k] = array_merge($v, $arr2[$k]);
}
print_r($result);
Заодно вопрос, где вот так можно поплотнее ознакомиться с такими "фишками" и разными вариациями, + комментарии?
Это у меня слабое звено хотел бы поднатаскаться. А то в мануалах уж простые примеры, тут бы не додумался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2018, 13:41
Помогаю со студенческими работами здесь

слияние массивов
сливаю 2 массива: $array_1 = array(&quot;0&quot; =&gt; &quot;0&quot;, &quot;2&quot; =&gt; &quot;0&quot;, &quot;4&quot; =&gt; &quot;0&quot;); $array_2 = array(&quot;1&quot; =&gt; &quot;1&quot;, &quot;3&quot; =&gt; &quot;1&quot;, &quot;5&quot; =&gt; &quot;1&quot;); ...

слияние массивов
Привет народ! есть у меня два массива: $all = 'id' =&gt; 55, 'id_cat' =&gt; 330, 'price' =&gt; 3700, 'name' =&gt; Phone, 'description'...

Слияние нескольких массивов
Нужно склеить 3 или больше массива в один, если попадаются одинаковые значения должно остаться только одно, (ключи не играют роли, то...

Слияние массивов без замены данных
Всем здравствуйте, возник такой вопрос, как осуществить слияние двух массивов но если в одном есть ключи такие же, то не заменять их...

Вывод двух файлов и слияние их
есть файл вопросы.txt и ссылки.txt и в каждом из файлов строки 01. 02. ... 40. как сделать чтобы, было вот так:


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru