php 數(shù)組鍵值互換的方法根據(jù)數(shù)據(jù)類型而異:關(guān)聯(lián)數(shù)組(字符串或整數(shù)鍵):使用 array_flip() 函數(shù)。普通數(shù)組(整數(shù)鍵):使用 asort() 排序數(shù)組,然后使用 array_keys() 獲取鍵。對(duì)象數(shù)組:使用 array_map() 和回調(diào)函數(shù)將對(duì)象的屬性映射到新數(shù)組中。
PHP 數(shù)組鍵值互換:基于數(shù)據(jù)類型的算法選擇
在 PHP 中,數(shù)組是一種有序且鍵控的數(shù)據(jù)結(jié)構(gòu)。鍵值互換是指將數(shù)組的鍵和值進(jìn)行交換,從而形成一個(gè)新的數(shù)組。根據(jù)數(shù)組中元素的數(shù)據(jù)類型,有不同的算法可以實(shí)現(xiàn)鍵值互換。
算法選擇
| 數(shù)據(jù)類型 | 算法 |
|---|---|
| 關(guān)聯(lián)數(shù)組(鍵為字符串或整數(shù)) | array_flip() |
| 普通數(shù)組(鍵為整數(shù)) |
asort() + array_keys()
|
| 對(duì)象數(shù)組 |
array_map() + 自定義回調(diào)函數(shù) |
實(shí)戰(zhàn)案例
1. 關(guān)聯(lián)數(shù)組
$arr = ['name' => 'John', 'age' => 30]; $flippedArr = array_flip($arr); print_r($flippedArr); // 輸出: // Array // ( // [John] => name // [30] => age // )
登錄后復(fù)制
2. 普通數(shù)組
$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 // )
登錄后復(fù)制
3. 對(duì)象數(shù)組
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
// )
// )
登錄后復(fù)制






