Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Обновить массив массивом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
pantela
Отправлено: 08 Января, 2018 - 01:57:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Здраст
Как через 2 JSON найти значения по ключу и заменить другое значение..?
т.е.
Цитата:
[
{
id:"1",
pref:"AF",
Code:"100",
capacity: "120"
},
{
id:"2",
pref:"AL",
Code:"200",
capacity: "75"
},
{
id:"3",
pref:"DZ",
Code:"300",
capacity: "220"
},
{
id:"4",
pref:"AS",
Code:"400",
capacity: "20"
},
{
id:"5",
pref:"AD",
Code:"500",
capacity: "80"
},
]

Как можно по этому JSON массиву обновить "Code"-ы по "pref"?
update Code where pref == {...}

Второй массив тоже виде :
Цитата:
{
id:"4",
pref:"AS",
Code:"200"
},
{
id:"5",
pref:"AD",
Code:"300"
},


Наверное надо http://php.net/manual/ru/functio...array-values.php Как ...?
Спасибо.

(Отредактировано автором: 18 Января, 2018 - 12:05:29)

 
 Top
Строитель
Отправлено: 08 Января, 2018 - 16:46:24
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




pantela, вложенные циклы + условие:
Спойлер (Отобразить)
 
 Top
pantela
Отправлено: 12 Января, 2018 - 21:16:29
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




А как можно merge сделать что бы результат был бы

PHP:
скопировать код в буфер обмена
  1. {
  2. id:"4",
  3. pref:"AS",
  4. Code:"100",
  5. Code_Edit:"200"
  6. },
  7. {
  8. id:"5",
  9. pref:"AD",
  10. Code:"200",
  11. Code_Edit:"300"
  12. }


Я понимаю что внутри foreach надо сделать присваивание Code_Edit = $a_2['pref'] и наверное на выходе сделать...

Спасибо.
 
 Top
Строитель
Отправлено: 12 Января, 2018 - 21:49:53
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




pantela, мне не понятно, с чем мержить, с предыдущим значением Code + 100 (что следует из вашего результирующего массива)? Тогда при чём тут $a_2['pref'], если в нём хранится нечто вроде AS, AD, и т.п.? Если нужно добавить ключ Code_Edit, со значением Code + 100, при условии что значение "pref" из первого массива будет равно значению "pref" во втором массиве, то можно просто дописать в условие выражение:
Спойлер (Отобразить)
 
 Top
pantela
Отправлено: 13 Января, 2018 - 09:27:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Ой ступил имел виду "Code_Edit = $a_2['Code']", и в итоге

$array = json_decode($json_1, true);

PHP:
скопировать код в буфер обмена
  1. foreach ($array as &$a_1) {
  2.     foreach (json_decode($json_2, true) as $a_2) {
  3.         if ($a_1['pref'] == $a_2['pref']) {
  4.             $a_1['Code'] = $a_1['Code'];
  5.             $a_1['Code_Edit'] = $a_2['Code'];
  6.         }
  7.     }
  8. }
  9.  
  10. unset($a_1);
  11. var_dump($array);


Но я имел виду без foreach сделать мердже.
Спасибо.
 
 Top
Строитель
Отправлено: 13 Января, 2018 - 13:29:30
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




pantela,
Спойлер (Отобразить)
?
 
 Top
pantela
Отправлено: 18 Января, 2018 - 01:29:11
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Вроде то что надо, только что мне делать если в json_2 у меня нету включа id, как его захватывать в результате из json_1.
т.е. тут мне чисто надо json_1 только Code обновить, остальное оставить как есть.
Закатив глазки

Update: т.е. если в json_1, напр. есть ключь "capaticy", тогда его тоже надо выводить при merge масивов? сейчас он исключается из-за того что в json_2 его нету.

(Отредактировано автором: 18 Января, 2018 - 12:06:50)

 
 Top
Строитель
Отправлено: 18 Января, 2018 - 19:52:39
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




pantela пишет:
Update: т.е. если в json_1, напр. есть ключь "capaticy", тогда его тоже надо выводить при merge масивов? сейчас он исключается из-за того что в json_2 его нету.
Спойлер (Отобразить)
 
 Top
pantela
Отправлено: 18 Января, 2018 - 22:57:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Я сделал так на сколько правельно
Спойлер (Отобразить)


По идее тут merge не нужен, т.е. перазапись всё равно остаётся.
Спасибо.
 
 Top
Строитель
Отправлено: 18 Января, 2018 - 23:29:57
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




pantela, ну вам ведь видней, что должно быть в результате Закатив глазки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB