繁体   English   中英

在php中使用array_merge,序列化和反序列化的麻烦

[英]trouble with array_merge, serialize and unserialize in 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标记相同......它只是一个例子)并在它之后添加字符串第二个数组对应于密钥。 但是,如果您不明白,请观看示例,您将会这样做。 谢谢

使用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,
)

我只是想知道是否可以通过一个功能块(如函数式编程)来解决。 它是:

$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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM