Проблема с array_merge, сериализация и десериализация в php

Я должен сделать это:

  1. возьмите ассоциативный массив и вставьте его в поле в моей базе данных, чтобы я мог повторно использовать его как ассоциативный массив. [СОВЕРШЕНО с сериализацией ($associativeArray)]
  2. возьмите ассоциативный массив из базы данных и просмотрите как массив. [СДЕЛАНО unserialize($arraySerializedBefore)]
  3. Объединить массив уже в базе данных (сериализованный) с только что созданным массивом.

Например:

Array 
( 
  [1] => 'nanananana,lol,',
  [2] => 'laaaaalalalala,asd,',
  [3] => 'r0tfl,lmfao,ahah,'
)

Второй массив для объединения с первым:

Array 
( 
  [1] => 'dunnoWhat,write,',
  [3] => 'hello,wooorld,'
)

Итак, мне нужен окончательный массив, как это:

Array 
( 
  [1] => 'nanananana,lol,\N,dunnoWhat,write,',
  [2] => 'laaaaalalalala,asd,',
  [3] => 'r0tfl,lmfao,ahah,\N,hello,wooorld,'
)

Если вы видите, что он сливается с помощью ключа, если у них одинаковый ключ, он добавляет "\n" для перехода на новую строку (то же самое для тега BR... это только пример) и после этого добавляет строку второго массива, соответствующего ключу. Однако, если вы не понимаете, смотрите пример, и вы будете. Спасибо

2 ответа

Решение

Мне просто было интересно, можно ли решить одним функциональным блоком (например, функциональное программирование). Это:

$foo = [
   0 => "test zero",
   1 => "test one",
   2 => "test two",
   3 => "test three"
];

$bar = [
   1 => "test four",
   5 => "test five",
   3 => "test six",
   4 => "test seven"
];

$result = 
   array_diff_key($foo, $bar)
   +
   array_combine(
      $y = array_keys(array_intersect_key($foo, $bar)), 
      array_map(function($x) use ($foo, $bar)
      {
         return $foo[$x]."\n".$bar[$x];
      }, $y)
   )
   +
   array_diff_key($bar, $foo);

Пройдите второй массив, используя foreach и сопоставьте его ключи с ключом с первым массивом, и, если совпадение найдено, обновите первый массив путем конкатенации.

<?php

$arr1=Array(1 => 'nanananana,lol,',2 => 'laaaaalalalala,asd,',3 => 'r0tfl,lmfao,ahah,');
$arr2=Array(1 => 'dunnoWhat,write,',3 => 'hello,wooorld,');

$i=min(array_keys($arr1));
foreach($arr2 as $k=>$val)
{
    if(array_key_exists($k,$arr1))
    {
    $arr1[$k].='\N, '.$val;
    }

}
print_r($arr1);

OUTPUT :

Array
(
    [1] => nanananana,lol,\N, dunnoWhat,write,
    [2] => laaaaalalalala,asd,
    [3] => r0tfl,lmfao,ahah,\N, hello,wooorld,
)
Другие вопросы по тегам