在 PHP 中,数组是一种有序且键控的数据结构。键值互换是指将数组中的键和值进行交换,从而创建一个新的数组。根据数组元素的数据类型,可以选择不同的算法来实现键值互换。
数据类型 | 算法 |
---|---|
关联数组(键为字符串或整数) | array_flip() |
普通数组(键为整数) | asort() + array_keys() |
对象数组 | array_map() + 自定义回调函数 |
当数组的键是字符串或整数时,可以使用 array_flip() 函数来实现键值的互换。
$arr = ['name' => 'John', 'age' => 30];
$flippedArr = array_flip($arr);
print_r($flippedArr);
输出结果:
Array
(
[John] => name
[30] => age
)
对于键是整数的普通数组,首先使用 asort() 对数组进行排序,然后使用 array_keys() 获取新的键。
$arr = [1, 2, 3, 4, 5];
asort($arr);
$flippedArr = array_keys($arr);
print_r($flippedArr);
输出结果:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
对于包含对象的数组,可以使用 array_map() 配合自定义回调函数来实现键值互换。
class Person {
public $name;
public $age;
}
$person1 = new Person();
$person1->name = 'John';
$person1->age = 30;
$person2 = new Person();
$person2->name = 'Mary';
$person2->age = 25;
$arr = [$person1, $person2];
$flippedArr = array_map(function ($obj) {
return [$obj->name, $obj];
}, $arr);
print_r($flippedArr);
输出结果:
Array
(
[John] => Person Object
(
[name] => John
[age] => 30
)
[Mary] => Person Object
(
[name] => Mary
[age] => 25
)
)
以上是 PHP 数组键值互换的几种常见方法和实战案例,根据不同的数据类型选择合适的算法,可以提高程序的效率与可读性。