使用单独的全名数组中的名字前置现有的姓氏数组

时间:2017-06-12 21:00:47

标签: php arrays string

我有一个主数据源,它只按我需要的顺序包含姓氏。我已经抓取了一个目标来获取数组中无组织的全名列表。是否可以在last_names数组的前面添加基于相关姓氏的匹配名字前缀?

姓氏数组示例输出(我按需使用的数据)

$last_name_array[0] = "Jones"
$last_name_array[1] = "Jang"
$last_name_array[2] = "Smith Jr"
$last_name_array[3] = "Johnson"
$last_name_array[4] = "Wall"
$last_name_array[5] = "Doe"

全名数组示例输出(数据我必须填写姓名)

$full_name_array[0] = "John Smith Jr"
$full_name_array[1] = "R.A. Jones"
$full_name_array[2] = "Bob Johnson"
$full_name_array[3] = "Bing-Ho Jang"
$full_name_array[4] = "CA Doe"
$full_name_array[5] = "Eli Wall"

1 个答案:

答案 0 :(得分:1)

是的,有可能。

假设这是您的有序姓氏列表:

$lastNames = [
    "Doggett",
    "Krycek",
    "Mulder",
    "Scully"
];

让我们进一步说这是你的全名无序列表:

$fullNames = [
    "Dana Scully",
    "Walter Skinner",
    "John Doggett",
    "Jeffrey Spender",
    "Fox Mulder",
    "Decoy Doe"
];

有很多方法可以解决这个问题,有些方法比其他方法更好 我将概述最天真(和缓慢)的解决方案,随时改进它。

  1. $name
  2. 中的每个$lastNames进行迭代
  3. 对于每个$name,请检查它是否包含在$fullNames
  4. 如果是,请将$name中的$lastNames替换为$fullNames
  5. 中的条目

    在我们的案例中,这将产生:

    $lastNames = [
        "John Doggett",
        "Krycek",
        "Fox Mulder",
        "Dana Scully"
    ];
    

    注意您需要注意第2步,因为某人的名字可能与其他人的姓氏相似,反之亦然。因此,我建议您仅与全名的最后 n 字符进行比较,其中 n 是姓氏的长度。