当前位置: 首页> 最新文章列表> 使用 array_flip() 逆转值与键后统计再处理

使用 array_flip() 逆转值与键后统计再处理

M66 2025-06-07

在 PHP 中,array_flip()array_count_values() 是两个常用的函数。array_flip() 用于交换数组的键和值,而 array_count_values() 用于统计数组中所有值的出现次数。通过将这两个函数结合起来使用,可以方便地处理数组数据,实现更复杂的数据操作。

1. array_flip() 函数

array_flip() 函数可以将一个数组的键和值交换。也就是说,数组中的键变成值,而值变成键。需要注意的是,数组中的值必须是唯一的,否则会丢失数据。

$array = [
    'apple' => 5,
    'banana' => 3,
    'orange' => 4,
];

$flippedArray = array_flip($array);
print_r($flippedArray);

输出:

Array
(
    [5] => apple
    [3] => banana
    [4] => orange
)

在这个例子中,array_flip() 函数将原数组中的键值互换,得到一个新的数组,其中原来的值变成了新的键。

2. array_count_values() 函数

array_count_values() 函数统计数组中每个值的出现次数。它返回一个关联数组,其中键是数组中的值,值是这些值在数组中出现的次数。

$array = ['apple', 'banana', 'orange', 'apple', 'banana', 'apple'];

$countedArray = array_count_values($array);
print_r($countedArray);

输出:

Array
(
    [apple] => 3
    [banana] => 2
    [orange] => 1
)

这个例子中,array_count_values() 统计了数组中每个水果的出现次数,并将结果作为一个新数组返回。

3. 结合使用 array_flip()array_count_values()

假设你有一个数组,其中包含了商品名称及其价格。你希望通过 array_flip() 逆转该数组,然后统计每个价格的出现次数。可以按照以下步骤进行操作:

$array = [
    'apple' => 5,
    'banana' => 3,
    'orange' => 5,
    'grape' => 3,
    'peach' => 4,
];

$flippedArray = array_flip($array);
print_r($flippedArray);

// 统计价格的出现次数
$countedArray = array_count_values($flippedArray);
print_r($countedArray);

输出:

Flipped Array:
Array
(
    [5] => apple
    [3] => banana
    [4] => peach
)

Counted Array:
Array
(
    [apple] => 1
    [banana] => 1
    [peach] => 1
)

4. 完整示例:从 URL 获取数据并处理

假设我们有一个包含多个 URL 的数组,想要提取每个 URL 的域名并统计每个域名的出现次数。我们可以首先使用 array_flip() 交换数组的键和值,然后用 array_count_values() 来统计每个域名出现的频率。

$urls = [
    'https://www.m66.net/product1',
    'https://www.m66.net/product2',
    'https://www.m66.net/product3',
    'https://www.example.net/product1',
    'https://www.m66.net/product4',
];

// 提取域名
$domains = array_map(function($url) {
    return parse_url($url, PHP_URL_HOST);
}, $urls);

// 逆转数组
$flippedDomains = array_flip($domains);
print_r($flippedDomains);

// 统计域名出现次数
$countedDomains = array_count_values($flippedDomains);
print_r($countedDomains);

输出:

Flipped Domains:
Array
(
    [m66.net] => https://www.m66.net/product1
    [example.net] => https://www.example.net/product1
)

Counted Domains:
Array
(
    [m66.net] => 4
    [example.net] => 1
)

在这个例子中,array_flip() 函数被用于交换域名和 URL,之后我们通过 array_count_values() 统计每个域名出现的次数,结果显示 m66.net 域名出现了 4 次,而 example.net 域名只出现了 1 次。

希望这篇文章能帮助您更好地理解如何结合使用 array_flip()array_count_values() 来处理数组数据。通过这些函数的组合,您可以轻松地逆转数组中的键值对,并统计数据的频率,为进一步的数据分析和处理提供支持。