PHP 数组键值互换的方法根据数据类型而异:关联数组(字符串或整数键):使用 array_flip() 函数。普通数组(整数键):使用 asort() 排序数组,然后使用 array_keys() 获取键。对象数组:使用 array_map() 和回调函数将对象的属性映射到新数组中。
PHP 数组键值互换:基于数据类型的算法选择
在 PHP 中,数组是一种有序且键控的数据结构。键值互换是指将数组的键和值进行交换,从而形成一个新的数组。根据数组中元素的数据类型,有不同的算法可以实现键值互换。
算法选择
数据类型 | 算法 |
---|---|
关联数组(键为字符串或整数) | array_flip() |
普通数组(键为整数) | asort() array_keys() |
对象数组 | array_map() 自定义回调函数 |
实战案例
1. 关联数组
$arr = ['name' => 'John', 'age' => 30]; $flippedArr = array_flip($arr); print_r($flippedArr); // 输出: // Array // ( // [John] => name // [30] => age // )
2. 普通数组
$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 // )
3. 对象数组
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 数组键值互换:基于不同数据类型的算法选择的详细内容。更多信息请关注PHP中文网其他相关文章!