Проблема с array_merge, сериализация и десериализация в php
Я должен сделать это:
- возьмите ассоциативный массив и вставьте его в поле в моей базе данных, чтобы я мог повторно использовать его как ассоциативный массив. [СОВЕРШЕНО с сериализацией ($associativeArray)]
- возьмите ассоциативный массив из базы данных и просмотрите как массив. [СДЕЛАНО
unserialize($arraySerializedBefore)
] - Объединить массив уже в базе данных (сериализованный) с только что созданным массивом.
Например:
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,
)