首页 > 解决方案 > 如何用 php 中按字母顺序排列的字母更改此数组的值?

问题描述

我试图在另一个数组中转换一个数组,用字母顺序替换值,但是当它找到一个相等的值时,放同一个字母。

这是一个 PHP 脚本。

结果我有这个:

Array
(
    [1] => 10014869
    [2] => 10014869
    [3] => 10010380
    [4] => 10112932
    [5] => 10112932
    [6] => 10113908
    [7] => 10115620
    [8] => 10014876
    [9] => 10017457
    [10] => 10010397
)

我想把它转换成这样:

Array
(
    [1] => A
    [2] => A
    [3] => B
    [4] => C
    [5] => C
    [6] => D
    [7] => E
    [8] => F
    [9] => G
    [10] => H
)

感谢所有建议

标签: phparrays

解决方案


我对此的看法:

<?php

$array = [
    10014869,
    10014869,
    10010380,
    10112932,
    10112932,
    10113908,
    10115620,
    10014876,
    10017457,
    10010397
];
$map  = array_flip(array_values(array_unique($array)));

array_walk($array, function(&$e) use ($map)
{
    $e = chr($map[$e] + 65);
});

print_r($array);

结果:

Array
(
    [0] => A
    [1] => A
    [2] => B
    [3] => C
    [4] => C
    [5] => D
    [6] => E
    [7] => F
    [8] => G
    [9] => H
)

注意:这仅适用于 <= 26 个不同的条目$array,下一个字符不会是字母。(有关 91 及以上的 ASCII 值,请参阅 ASCII 表)


推荐阅读