php数组一对一替换实现代码

  

要实现 PHP 数组一对一替换,可以使用 PHP 内置的 array_map() 函数。其参数为一个回调函数和至少一个数组,回调函数会对每个数组元素进行处理并返回新元素,最终返回一个处理过的新数组。

下面是实现 PHP 数组一对一替换的完整攻略:

1. 准备待替换数组

首先需要准备待替换的数组,假设我们有一个数组 $arr1,其中包含需要替换的原始值:

$arr1 = array('apple', 'banana', 'cherry');

2. 准备替换数组

接下来需要准备用于替换的另一个数组 $arr2,其中包含每个原始值对应的新值:

$arr2 = array('red', 'yellow', 'pink');

3. 编写回调函数

然后需要编写一个回调函数,用于将每个 $arr1 中的元素替换为相应的 $arr2 中的元素。我们可以使用 array_search() 函数查找 $arr1 中当前元素在 $arr2 中的位置,然后返回相应位置在 $arr2 中的元素。

function replace($val, $arr1, $arr2) {
  $key = array_search($val, $arr1);
  return $arr2[$key];
}

4. 使用 array_map() 函数替换

最后使用 array_map() 函数调用回调函数,进行一对一替换:

$arr3 = array_map('replace', $arr1, array_fill(0,count($arr1),$arr1), array_fill(0,count($arr1),$arr2));

这里需要注意的是,由于 array_map() 函数可以接受多个数组,但每个函数在调用时只取每个数组的相同键所对应的值,所以我们需要增加两个填充了 $arr1$arr2 的数组作为参数。

5. 查看替换结果

现在 $arr3 数组中存储的就是 $arr1 数组中每个元素使用 $arr2 中对应元素替换后的结果:

print_r($arr3);

输出结果:

Array ( [0] => red [1] => yellow [2] => pink )

示例说明

示例 1

假设有一个 $cars 数组,存储了不同品牌的汽车:

$cars = array('BMW', 'Mercedes', 'Audi');

现在我们需要将这些汽车品牌使用对应的颜色替换,颜色数组为:

$colors = array('blue', 'gray', 'black');

下面是实现替换的完整代码:

function replace($car, $cars, $colors) {
  $key = array_search($car, $cars);
  return $colors[$key];
}

$cars = array('BMW', 'Mercedes', 'Audi');
$colors = array('blue', 'gray', 'black');

$cars_color = array_map('replace', $cars, array_fill(0,count($cars),$cars), array_fill(0,count($colors),$colors));

print_r($cars_color);

输出结果:

Array ( [0] => blue [1] => gray [2] => black )

示例 2

假设有一个 $fruits 数组,存储了不同种类的水果:

$fruits = array('apple', 'banana', 'orange');

现在我们需要将这些水果种类使用对应的单价替换,单价数组为:

$prices = array(3.5, 1.2, 2);

下面是实现替换的完整代码:

function replace($fruit, $fruits, $prices) {
  $key = array_search($fruit, $fruits);
  return $prices[$key];
}

$fruits = array('apple', 'banana', 'orange');
$prices = array(3.5, 1.2, 2);

$fruit_price = array_map('replace', $fruits, array_fill(0,count($fruits),$fruits), array_fill(0,count($prices),$prices));

print_r($fruit_price);

输出结果:

Array ( [0] => 3.5 [1] => 1.2 [2] => 2 )
相关文章