如何实现两个数组之间值的替换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现两个数组之间值的替换相关的知识,希望对你有一定的参考价值。

参考技术A 要想把一个二维数组值全部替换成另一个二维数组的值,前提条件为二者的规模是相同的。即行数和列数分别相同。
假定均为M行N列,类型为int,即

1

int a[M][N], b[M][N];

要将a中所有值替换成b的值,有以下两种方法。
1 逐一元素赋值。
使用双重循环,对数组元素遍历并赋值。
代码如下:

1
2
3
4

int i, j;
for(i = 0; i < M; i ++)
for(j = 0; j < N; j ++)
a[i][j] = b[i][j];//逐元素赋值。

2 整体复制内存。
由于二者结构相同,可以使用C库函数memcpy来实现更高效的数据复制。

1

void *memcpy(void *dest, const void *src, size_t n);

从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
调用该函数需要引用string.h头文件。
代码如下:

1

memcpy(b, a, sizeof(a));

只需要这样一句就可以完成复制操作了。

如何使用php在数组的两个键之间插入一个值?

【中文标题】如何使用php在数组的两个键之间插入一个值?【英文标题】:How do I insert a value in between two keys in an array using php? 【发布时间】:2012-01-02 06:51:36 【问题描述】:

我有一个包含 3 个值的数组:

$b = array('A','B','C');

这是原始数组的样子:

数组([0] => A [1] => B [2] => C)

我想在第一个键和第二个键之间的位置插入一个特定的值(例如字母'X'),然后将其后面的所有值向下移动一个。所以实际上它会变成第二个值,第二个会变成第三个,第三个会变成第四个。

这就是数组之后的样子:

数组([0] => A [1] => X [2] => B [3] => C)

如何使用 php 在数组的两个键之间插入一个值?

【问题讨论】:

见***.com/questions/3797239/… 【参考方案1】:

有一种方法不用array_splice。它更简单,但是更脏。

这是你的代码:

$arr = array('A', 'B', 'C');
$arr['1.5'] = 'X'; // '1.5' should be a string

ksort($arr);

输出:

Array
(
    [0] => A
    [1] => B
    [1.5] => X
    [2] => C
)

【讨论】:

这实际上并没有回答问题,因为它依赖于已经知道所有索引。如果你想再次推动 1 和 2 之间的东西怎么办?您需要记住是否已经有 1.5。 但如果您只需要在特定位置输入一个值,这是一个很好的快速解决方案。 +1【参考方案2】:

array_splice()是你的朋友:

$arr = array('A','B','C');
array_splice($arr, 1, 0, array('X'));
// $arr is now array('A','X','B','C')

此函数操作数组,通常用于截断数组。但是,如果您“告诉它”删除零个项目 ($length == 0),您可以在指定索引处插入一个或多个项目。

请注意,要插入的值必须在数组中传递。

【讨论】:

以上是关于如何实现两个数组之间值的替换的主要内容,如果未能解决你的问题,请参考以下文章

动态规划(下):如何求得状态转移方程并进行编程实现?

CSS如何选择字符串最后两个字符

PHP实现快速排序

如何替换列值的前2位,其中值在2019到2099之间

JavaScript如何实现对数组元素的插入、删除、替换

如何使用php在数组的两个键之间插入一个值?