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

Добавить элемент(ы) в массив

13.09.2018, 17:34. Показов 1027. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть такая конструкция
PHP
1
2
3
4
5
6
7
8
$arr2 = array();
...
foreach ($arr1 as $val3) {
            $masterIdNew = $val3[0]['masterid']; // id мастера из массива $arr1
            $res = $this->model->test1($masterIdNew,$location,$currentDate);
            // debug($res);
            $arr2[] = $res;
        }
результат:
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
83
84
85
86
87
88
89
90
91
92
93
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-14
                    [dateview] => 14.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
            [1] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-15
                    [dateview] => 15.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
            [2] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-16
                    [dateview] => 16.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
            [3] => 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
                )
 
        )
 
    [1] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 16
                    [date] => 2018-09-13
                    [dateview] => 13.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
        )
 
    [2] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 22
                    [date] => 2018-09-25
                    [dateview] => 25.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
        )
 
)
Мне нужно, чтобы в массивах, где [recordstatus] => 2 добавились значения в результате выборки
Выборка такого типа:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
                        }
                        $arr2[] = $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
83
84
85
86
87
88
89
90
91
92
93
94
95
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-14
                    [dateview] => 14.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
            [1] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-15
                    [dateview] => 15.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
            [2] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-16
                    [dateview] => 16.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
            [3] => 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
                    [min] => $min
                    [max] => $max
                )
 
        )
 
    [1] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 16
                    [date] => 2018-09-13
                    [dateview] => 13.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
        )
 
    [2] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 22
                    [date] => 2018-09-25
                    [dateview] => 25.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
 
        )
 
)
Вот как-то после $res обработать массив
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2018, 17:34
Ответы с готовыми решениями:

Добавить элемент в ассоциативный массив
Добавить элемент в ассоциативный массив? Не создать массив ассоциативных массивов, а именно добавить ключ/значение в ассоциативный...

Как добавить элемент в массив ?
Дело такое, у меня есть код: <?php session_start(); $_SESSION = array($_GET); //$_GET; header("Location: Index.html"); ...

Добавить в массив (дерево) элемент со значением текущего уровня вложенности
Необходимо добавить в массив (дерево) элемент со значением текущего уровня вложенности. Трудности с определением уровня. Есть такая ф-я...

7
4 / 3 / 2
Регистрация: 03.09.2013
Сообщений: 141
14.09.2018, 14:55  [ТС]
немного копаясь, понимаю, что конструкция
PHP
1
2
3
if (empty($res[0]['recordtime'])) {
                    array_push($res[0], "apple", "raspberry");
                }
после
PHP
1
$res = $this->model->test1($masterIdNew,$location,$currentDate);
добавляет нужные ключи-значения, но только в одном случае, когда я явно указываю [0], т.е. первый ключ массива, но как это сделать в цикле по проходу по ключам пока не могу додуматься
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
14.09.2018, 15:04
Цитата Сообщение от wladim Посмотреть сообщение
когда я явно указываю [0], т.е. первый ключ массива
схрена он первый ключ?

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

если вам нужны массивы, то вам в СИ
0
 Аватар для sad67man
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
14.09.2018, 19:22
otto-fukin, Вы правы, но в php это принято называть массивами, хотя по сути своей они таковыми не являются, но могут быть использованы как массивы в том числе.
0
4 / 3 / 2
Регистрация: 03.09.2013
Сообщений: 141
14.09.2018, 19:50  [ТС]
Так как все-таки решить то? Пробовал перебором foreach, for, не получается
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
15.09.2018, 11:48
Цитата Сообщение от wladim Посмотреть сообщение
Пробовал перебором foreach
первая итерация foreach даст вам первый элемент массива. Но не факт что с индексом 0. Если вы хотите занести именно в первый элемент массива, который первым выскочит при foreach используйте
PHP
1
$first = reset($array);
это ссылка, поэтому фёрсту просто присваивайте нужное значение
0
4 / 3 / 2
Регистрация: 03.09.2013
Сообщений: 141
15.09.2018, 12:44  [ТС]
Здравствуйте. Нет, мне нужно по результату
PHP
1
$res = $this->model->test1($masterIdNew,$location,$currentDate);
, который выдает массив (см.выше) найти условия где или [recordstatus] => 0 или [recordtime] => пустой.
И в каждом проходе
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-14
                    [dateview] => 14.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                )
в зависимости от этих условий добавить значения, условно
PHP
1
$timeblock = ['min' => $min, 'max' => $max];
в данном случае для этого прохода чтобы получилось
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [recordstatus] => 0
                    [masterid] => 44
                    [date] => 2018-09-14
                    [dateview] => 14.09.2018
                    [sity] => 1
                    [recordtime] => 
                    [id] => 1
                    [display] => Мужской зал
                    [gategory] => location
                    [min] => value
                    [max] => value
                )
И так далее по походу каждого массива
Чтобы в итоге сохранилась такая же конструкция, но с учетом этих моментов
0
4 / 3 / 2
Регистрация: 03.09.2013
Сообщений: 141
20.09.2018, 20:30  [ТС]
Решено:
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
    /*
     * Вывод записей к мастеру с привязкой к месту
     */
    public function location() {
        // текущая локация
        $location = intval($this->params[0]);
        // текущая дата
        $currentDate = convertCurrentToDbYmdEnroll();
 
        $arr1 = array();
        $arr2 = array();
 
        // осуществляем поиск всех мастеров из таблицы мастеров, array()
        $allMastersArray = $this->model->viewAllMasterModel();
        // debug($allMastersArray);
 
        // в проходе по Id мастера запрашиваем, есть ли из найденных мастеров записи в таблице записей,
        // соответствующие запросу
        foreach ($allMastersArray as $var1) {
            $masterId = $var1['id'];
 
            // запрашиваем реально существующих мастеров по условиям запроса
            $var2 = $this->model->viewMastersArrLocation($masterId,$currentDate,$location);
 
            // если массив не пустой, работаем с заполненным массивом, т.е.
            // реально существующим мастером в таблице записей, отсеивая пустые
            if ($var2) {
                $arr3 = array();
                // убираем ненужные поля
                foreach ($var2 as $var3) {
                    unset($var3['recorddate']);
                    unset($var3['recordstatus']);
                    // попробуем тут же притянуть записи с группировкой
                    $var4 = $this->model->test1($var3['id'],$location,$currentDate);
                    foreach ($var4 as $var5) {
                        if (empty($var5['recordtime'])) {
                            $masterId = $var5['masterid'];
                            $date = $var5['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];
                            $var5 += $timeblock;
                        }
                        $arr3[] = $var5;
                    }
                    $arr2[]['time'] = $arr3;
                }
                // получили ассоциативный массив
                $arr1[]['master'] = $var3;
            }
        }
 
        $result = [];
        foreach ($arr1 as $k => $v) {
            $result[$k] = array_merge($v, $arr2[$k]);
        }
 
        $this->set([
            'result' => $result,
            'location' => $currentLocation,
            'upload_dir' => self::IMG_PATH,
            'onclick' => 'style="cursor:pointer" onMouseOver="this.style.background=\'#82C6CD\'" onMouseOut="this.style.background=\'#FFFFFF\'" ',
        ]);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.09.2018, 20:30
Помогаю со студенческими работами здесь

Добавить элемент в сложный массив
$this->data = array(); if (isset($this->request->post)) { $this->data = $this->request->post; Нужно чтобы в массив...

Если элемент массива больше А, то добавить перед элементом число А, иначе добавить после элемента число Б
Дан целочисленный массив и два числа А и Б. Если элемент массива больше А то добавить перед элементом число А, в противном случае добавить...

Добавить класс в последний элемент
Народ, приветствую Вас! Ситуация такая, необходимо добавить класс "last" в последний элемент списка: <?php ...

Кольцевая диаграмма PhP как добавить ещё один элемент?
Как добавить ещё один круг в круговую диаграмму, что бы из неё сделать кольцевую диаграмму? Не могу понять как это сделать так как дали...

добавить массив
как добавить такой массив$data, в нём хранится 10 разных значений, как добавить в базу данных в таблицу 10 разных колонок так не...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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