|
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 63
|
|
Работа с массивом26.12.2018, 09:41. Показов 1364. Ответов 8
Добрый день! Есть вот такой массив
Array ( [СписокСтатусов] => Array ( [СтрокаСписка] => Array ( [0] => Array ( [СтатусЗаказа] => На ответственном хранении [КодСтатуса] => 000000011 ) [1] => Array ( [СтатусЗаказа] => Доставлен на склад комплектации [КодСтатуса] => 000000002 ) [2] => Array ( [СтатусЗаказа] => Выполнен этап перевозки [КодСтатуса] => 000000006 ) [3] => Array ( [СтатусЗаказа] => Отправлен грузополучателю [КодСтатуса] => 000000005 ) [4] => Array ( [СтатусЗаказа] => Исполнен [КодСтатуса] => 000000008 ) [5] => Array ( [СтатусЗаказа] => Открыт [КодСтатуса] => 000000001 ) ) ) [СписокПерсональныхНастроек] => Array ( [СтрокаСписка] => Array ( [0] => Array ( [КодСтатуса] => 000000001 [СтатусЗаказа] => Открыт [РассылкаЭлектронныйЯщик] => 1 [ЭлектронныйЯщик] => Brandonhit86@gmail.com [РассылкаSMS] => 1 [ТелефонныйНомер] => +79805119390 ) [1] => Array ( [КодСтатуса] => 000000008 [СтатусЗаказа] => Исполнен [РассылкаЭлектронныйЯщик] => 1 [ЭлектронныйЯщик] => Brandonhit87@gmail.com [РассылкаSMS] => 1 [ТелефонныйНомер] => +79899999999 ) ) ) ) он приходит из 1С и только так... голову сломал, как мне так его перебрать, чтоб из [СписокСтатусов] => array [СтрокаСписка] [СтатусЗаказа] подтянуть данные из второго подмассива [СписокПерсональныхНастроек] [СтрокаСписка] ? мне нужно проверять если во втором подмассиве есть код первого подмассива, то я беру и вывожу данные что к статусу привязана такая то почта и телефон, а иначе выводить пустые инпуты, я пробовал foreach, вывожу Статусы Заказа, а потом когда заполняю данными начинается дублирование....
0
|
|
| 26.12.2018, 09:41 | |
|
Ответы с готовыми решениями:
8
Работа с массивом Работа с массивом Работа с массивом, |
|
29 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
|
| 26.12.2018, 11:44 | |
|
Не очень понятно из примера, но на сколько я понял необходимо к одному массиву подтянуть данные из другого.
Алгоритм тут такой: Первый массив прогоняем в цикле. В каждой итерации подтягиваем нужные данные по любому ключу, которые идентифицирует данные в обоих массивах. Про дублирование не понятно совсем.
0
|
|
|
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 63
|
|
| 26.12.2018, 13:49 [ТС] | |
|
я запускаю foreach -> вывожу список СтатусЗаказа, затем внутри этого foreach запускаю foreach второго массива и через if задаю условие if($settings["СтатусЗаказа"] == $status['СтатусЗаказа']) то понятно что данные относятся друг к другу. но когда я пишу else то куча дублей
<?foreach($array1 as $status):?> <div class="container_settings_list"> <div> <p><?=$status['СтатусЗаказа']?></p> <span class="glyphicon glyphicon-edit" aria-hidden="true"></span> </div> </div> <?foreach($array2 as $settings):?> <?if($settings["СтатусЗаказа"] == $status['СтатусЗаказа']):?> 1 <?else:?> 2 <?endif?> <?endforeach;?> <?endforeach;?> выводит На ответственном хранении 2 2 Доставлен на склад комплектации 2 2 Выполнен этап перевозки 2 2 Отправлен грузополучателю 2 2 Исполнен 2 1 Открыт 1 2 мало того что двойка выводится по два раза, так еще она и к единице попадает...
0
|
|
|
29 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
||
| 26.12.2018, 14:20 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 63
|
|
| 26.12.2018, 14:24 [ТС] | |
|
если коротко, то если есть данные то выводим почту и телефон относящийся к $status['СтатусЗаказа'] если же нет, то нужно вывести пустые input для дальнейшего заполнения...
0
|
|
|
29 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
||||||
| 26.12.2018, 14:40 | ||||||
|
Значит данные дублируются, чтобы этого избежать можно пойти несколькими путями.
Самый простой на мой взгляд, который не требует вникания в задачу. Это в массив ввести дополнительное поле, например is_show и если запись уже была показана (значение или инпут) то записывать туда 1. В цикле соответственно в начале каждой итерации проверять это значение
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 63
|
|
| 26.12.2018, 17:14 [ТС] | |
|
в общем я сделал так
$array3 = array_merge($array1, $array2); foreach($array3 as $key => $val){ $newarr = []; if(!isset($newarr[$val['СтатусЗаказа']])){ while (1) { if (!isset($newarr[$val['СтатусЗаказа']])){ $newarr[$val['СтатусЗаказа']]['ЭлектронныйЯщик'] = $val['ЭлектронныйЯщик']; $newarr[$val['СтатусЗаказа']]['ТелефонныйНомер'] = $val['ТелефонныйНомер']; $newarr[$val['СтатусЗаказа']]['РассылкаЭлектронныйЯщик'] = $val['РассылкаЭлектронныйЯщик']; $newarr[$val['СтатусЗаказа']]['РассылкаSMS'] = $val['РассылкаSMS']; $newarr[$val['СтатусЗаказа']]['КодСтатуса'] = $val['КодСтатуса']; break; } } echo "<pre>" . print_r($newarr, true); } } объединил два массива и потом создал новый массив и тд, выдает Array ( [На ответственном хранении] => Array ( [ЭлектронныйЯщик] => [ТелефонныйНомер] => [РассылкаЭлектронныйЯщик] => [РассылкаSMS] => [КодСтатуса] => 000000011 ) ) Array ( [Доставлен на склад комплектации] => Array ( [ЭлектронныйЯщик] => [ТелефонныйНомер] => [РассылкаЭлектронныйЯщик] => [РассылкаSMS] => [КодСтатуса] => 000000002 ) ) Array ( [Выполнен этап перевозки] => Array ( [ЭлектронныйЯщик] => [ТелефонныйНомер] => [РассылкаЭлектронныйЯщик] => [РассылкаSMS] => [КодСтатуса] => 000000006 ) ) Array ( [Отправлен грузополучателю] => Array ( [ЭлектронныйЯщик] => [ТелефонныйНомер] => [РассылкаЭлектронныйЯщик] => [РассылкаSMS] => [КодСтатуса] => 000000005 ) ) Array ( [Исполнен] => Array ( [ЭлектронныйЯщик] => [ТелефонныйНомер] => [РассылкаЭлектронныйЯщик] => [РассылкаSMS] => [КодСтатуса] => 000000008 ) ) Array ( [Открыт] => Array ( [ЭлектронныйЯщик] => [ТелефонныйНомер] => [РассылкаЭлектронныйЯщик] => [РассылкаSMS] => [КодСтатуса] => 000000001 ) ) Array ( [Открыт] => Array ( [ЭлектронныйЯщик] => Brandonhit86@gmail.com [ТелефонныйНомер] => +79805119390 [РассылкаЭлектронныйЯщик] => 1 [РассылкаSMS] => 1 [КодСтатуса] => 000000001 ) ) Array ( [Исполнен] => Array ( [ЭлектронныйЯщик] => Brandonhit87@gmail.com [ТелефонныйНомер] => +79899999999 [РассылкаЭлектронныйЯщик] => 1 [РассылкаSMS] => 1 [КодСтатуса] => 000000008 ) ) теперь повторяются Открыт и Исполнен , как удалить пустые? пробовал array_uniqe, не помогает...
0
|
|
|
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 63
|
|
| 28.12.2018, 11:45 [ТС] | |
|
Доброе утро, в общем разобрался я с выше написанным, теперь вот я получаю в $_POST такой массив
Array ( ['РассылкаПочты'] => Array ( [000000011] => 1 [000000002] => 1 [000000006] => 1 [000000005] => 1 [000000008] => 1 [000000001] => 1 ) ) Array ( ['Почта'] => Array ( [000000011] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, [000000002] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, [000000006] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, [000000005] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, [000000008] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, [000000001] => ыы№№Ав ) ) Array ( ['РассылкаSMS'] => Array ( [000000011] => 0 [000000002] => 0 [000000006] => 0 [000000005] => 0 [000000008] => 0 [000000001] => 1 ) ) Array ( ['ТелефонныйНомер'] => Array ( [000000011] => [000000002] => [000000006] => [000000005] => [000000008] => [000000001] => ыы221 ) ) Array ( ['СтатусЗаказа'] => Array ( [000000011] => На ответственном хранении [000000002] => Доставлен на склад комплектации [000000006] => Выполнен этап перевозки [000000005] => Отправлен грузополучателю [000000008] => Исполнен [000000001] => Открыт ) ) Array ( [save_settings] => Сохранить настройки ) мне из него нужно сделать такой [СтрокаСписка] => Array ( [0] => stdClass Object ( [КодСтатуса] => 000000011 [СтатусЗаказа] => На ответственном хранении [РассылкаПочты] => 1 [Почта] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [РассылкаSMS] => [ТелефонныйНомер] => ) [1] => stdClass Object ( [КодСтатуса] => 000000002 [СтатусЗаказа] => Доставлен на склад комплектации [РассылкаПочты] => 1 [Почта] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [РассылкаSMS] => [ТелефонныйНомер] => ) [2] => stdClass Object ( [КодСтатуса] => 000000006 [СтатусЗаказа] => Выполнен этап перевозки [РассылкаПочты] => 1 [Почта] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [РассылкаSMS] => [ТелефонныйНомер] => ) [3] => stdClass Object ( [КодСтатуса] => 000000005 [СтатусЗаказа] => Отправлен грузополучателю [РассылкаПочты] => 1 [Почта] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [РассылкаSMS] => [ТелефонныйНомер] => ) [4] => stdClass Object ( [КодСтатуса] => 000000008 [СтатусЗаказа] => Исполнен [РассылкаПочты] => 1 [Почта] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [РассылкаSMS] => [ТелефонныйНомер] => ) [5] => stdClass Object ( [КодСтатуса] => 000000001 [СтатусЗаказа] => Открыт [РассылкаПочты] => 1 [Почта] => ыы№№Ав [РассылкаSMS] => 1 [ТелефонныйНомер] => ыы221 ) ) усть элегантные решения?! Добавлено через 1 час 52 минуты Че то вообще туплю с массивами) переделал я форму, теперь вот так получаю Array ( [РассылкаПочты] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1 ) [Почта] => Array ( [0] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [1] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [2] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [3] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [4] => direktor@rogaikopyta.ru, manager@rogaikopyta.ru, manager2@rogaikopyta.ru, buhgalter@rogaikopyta.ru, tvillada@gmail.com [5] => ыы№№Ав ) [РассылкаSMS] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 1 ) [ТелефонныйНомер] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => ыы221 ) [СтатусЗаказа] => Array ( [0] => На ответственном хранении [1] => Доставлен на склад комплектации [2] => Выполнен этап перевозки [3] => Отправлен грузополучателю [4] => Исполнен [5] => Открыт ) [КодСтатуса] => Array ( [0] => 000000011 [1] => 000000002 [2] => 000000006 [3] => 000000005 [4] => 000000008 [5] => 000000001 ) [save_settings] => Сохранить настройки ) теперь нужно по ключам я понимаю, но что так было [0] => [КодСтатуса] => 000000011 [СтатусЗаказа] => На ответственном хранении [РассылкаПочты] => 1 [Почта] => direktor@rogaikopyta.ru [РассылкаSMS] => 0 [ТелефонныйНомер] => +79163333333 [1] => [КодСтатуса] => 00000008 [СтатусЗаказа] => На ответственном хранении [РассылкаПочты] => 1 [Почта] => direktor@rogaikopyta.ru [РассылкаSMS] => 0 [ТелефонныйНомер] => +79163333333 и т.д. подскажите, понимаю что не трудно, замкнуло!)
0
|
|
|
29 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
|
| 28.12.2018, 12:20 | |
|
0
|
|
| 28.12.2018, 12:20 | |
|
Помогаю со студенческими работами здесь
9
Работа с Массивом
Работа с массивом
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|