是否可以用不同的数组中的不同键替换不同的数组值

时间:2014-09-21 01:23:11

标签: php arrays replace

[1] => ooooooo
[2] => ooooooo
[3] => ooooooo
[4] => ooooooo
[5] => ------------empty
[6] => ooooooo
[7] => ooooooo
[8] => ooooooo
[9] => ooooooo
[10] => ------------empty
[11] => ooooooo
[12] => ooooooo
[13] => ------------empty
[14] => ooooooo
[15] => ooooooo

替换上面的array1:" ------------空"使用下面的array2,保持array1的键

[1] => xxxxx
[2] => yyyyy
[3] => zzzzz

所以我要求添加解释 - 一张画了一千多个字的图片(我相信?)我应该多说些什么。去年圣诞节我度过了美好的时光,我希望你也做到了 结果看起来像这样:

也许我应该说它是自动查找和替换的必要条件 - 所以没有手动或个人输入。每个" ---空"每次通话都可能处于不同的位置

[1] => ooooooo
[2] => ooooooo
[3] => ooooooo
[4] => ooooooo
[5] => xxxxx
[6] => ooooooo
[7] => ooooooo
[8] => ooooooo
[9] => ooooooo
[10] => yyyyy
[11] => ooooooo
[12] => ooooooo
[13] => zzzzz
[14] => ooooooo
[15] => ooooooo

1 个答案:

答案 0 :(得分:1)

是的,你可以说:

array1[INDEX] = array2[ANOTHER_INDEX];

但是你必须要小心两个数组包含相同类型以及索引在数组大小范围内

我猜你想做的是:

array1[5] = array2[1]; // replace '------------empty` with 'xxxxx'
array1[10] = array2[2]; // replace '------------empty` with 'yyyyy' 
array1[13] = array[3]; // replace '------------empty` with 'zzzzz'

请注意,在大多数编程语言中,数组索引从0开始,因此所有索引应该可以减少1。

这是一些在循环中执行的伪代码:

int i = 0; // index for array1
int j = 0; // index for array2
while( i < array1.size ) 
{
    if(array1[i] equals "------------empty" AND j < array2.size) 
    {
        array1[i] = array2[j];
        increment j;
    }
    increment i;
}

修改

根据您的评论,这是在循环中执行此操作的PHP代码。

$size1 = count($array1);
$size2 = count($array2);
$i = 0;
$j = 0;
while($i < $size1) {
    if($array1[$i] == "------------empty" && $j < $size2) {
        $array1[$i] = $array2[$j];
        $j = $j + 1;
    }
    $i = $i + 1;
}

如果您要比较对象,则应take a look at this

Here is a full running example