Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.12.2018, 09:41
Ответы с готовыми решениями:

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

Работа с массивом
Ребят, помогите пожалуйста : 1) С помощью двух циклов записываю в текстовый файл массив с числами, разделенные пробелом, нужно сделать...

Работа с массивом,
После выполнения скрипта на выходе получается следующее (перенос строки после трех элементов специально сделал): Array ( => S03...

8
 Аватар для lestat89
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
 Аватар для lestat89
29 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
26.12.2018, 14:20
Цитата Сообщение от ruslay Посмотреть сообщение
но когда я пишу else то куча дублей
Как я уже говорил выше - не понятно про дубли. Зачем их вообще брать во внимание и соответственно зачем писать else
0
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 63
26.12.2018, 14:24  [ТС]
если коротко, то если есть данные то выводим почту и телефон относящийся к $status['СтатусЗаказа'] если же нет, то нужно вывести пустые input для дальнейшего заполнения...
0
 Аватар для lestat89
29 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
26.12.2018, 14:40
Значит данные дублируются, чтобы этого избежать можно пойти несколькими путями.
Самый простой на мой взгляд, который не требует вникания в задачу. Это в массив ввести дополнительное поле, например
is_show и если запись уже была показана (значение или инпут) то записывать туда 1.
В цикле соответственно в начале каждой итерации проверять это значение
PHP
1
if($iteration['is_show']) continue;
и пропускать.
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
 Аватар для lestat89
29 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
28.12.2018, 12:20
Тут тоже самое
Цитата Сообщение от lestat89 Посмотреть сообщение
Алгоритм тут такой:
Первый массив прогоняем в цикле. В каждой итерации подтягиваем нужные данные по любому ключу, которые идентифицирует данные в обоих массивах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2018, 12:20
Помогаю со студенческими работами здесь

Работа с Массивом
Привет всем. задача стоит в том, чтобы элементы заданного одномерного массива вывести в след. порядке: Массив: 1 2 3 4 5 6 7 8 9...

Работа с массивом
подскажите как можно это реализовать: даны целые числа A1..A50, нужно найти сумму тех чисел которые удовлетворяют условию ABS(Ai)&lt;i*i

Работа с массивом
Всем привет! Помочь сможете? Дан одномерный массив, который содержит не более 30 вещественных чисел. Найти сумму элементов, которые...

Работа с массивом
Ребят помогите есть массив надо сделать из него массив в виде Не подскажите как сделать

Работа с массивом
Объясните пожалуйста, каким способом можно: 1)вернуть массив только с цифрами? 2) сделать первые буквы заглавными? 3)и вместо запятых...


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

Или воспользуйтесь поиском по форуму:
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
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru