我有两个字符串数组。第一个数组包含旧数据,第二个数组是应该覆盖旧数组中数据的新数据。这很容易通过匹配两个数组的索引并覆盖任何不同的单元格来实现。
然而,当新数据数组的索引长度不同于旧数据时,就会出现问题。例如,如果在新数组的中间插入一个新字符串,我不希望该索引覆盖旧索引中的匹配索引。
这是一个例子来说明我正在努力实现的目标......
myoldarray("foobar", "blah", "zilch")
mynewarray("foobar", "blah", "watcha", "zilch")
我的输出应该是
finalarray("foobar", "blah", "watcha", "zilch")
顺序很重要,但是“zilch”需要保持与以前相同的密钥。
答案 0 :(得分:1)
array_merge($myoldarray, $mynewarray);
答案 1 :(得分:0)
如果您必须保留索引,对于数值数组,您可以使用array_compare来获取差异,然后将其添加到数组的相同位置。如果此索引已存在,我们只需移动旧值&索引1键更高。我希望这就是你想做的事情
$difference = array_diff($newarr,$oldarr);
foreach($difference as $diff)
{
foreach($newarr as $key => $value)
{
if($value == $diff)
{
if(array_key_exists($key,$oldarr))
{
$oldkey = count($oldarr)-1;
for($i=count($oldarr);$i>$key;$i--)
{
$oldarr[$oldkey+1] = $oldarr[$oldkey];
}
$oldarr[$key] = $value;
}
else
{
$oldarr[$key] = $value;
}
}
}
}
祝你好运!