【发布时间】:2014-09-03 20:12:46
【问题描述】:
我有一个带有如下字符串的 PHP 数组:
Tim Jones
Karl Smith
Tim Jones
T Jones
K Smith
Tim JONES
我想获取数组中每个字符串的出现次数。我用array_count_values。但它会返回
Tim Jones : 2
Karl Smith : 1
T Jones : 1
K Smith : 1
Tim JONES : 1
但我只需要检查姓氏和名字的第一个字母以进行计数
Tim Jones : 4
Karl Smith : 2
有关如何执行此操作的任何建议。谢谢
编辑
这是一个更正确的例子。如果数组是
Tim Jones
Karl Smith
Harry Jones
Tim Jones
T Jones
K Smith
Tim JONES
输出应该是
Tim Jones : 4
Karl Smith : 2
Harry Jones : 1
我对 PHP 不是很熟悉。我遇到了array_count_values 并尝试了它。但我需要做一些数组拆分、搜索和计数。
基于 Chris 代码,这就是我现在所拥有的
<?php
$names = array (
'Tim Jones',
'Karl Smith',
'Tim Jones',
'T Jones',
'K Smith',
'Tim JONES'
);
$counts = array();
$actualMap = array();
foreach ($names as $name) {
$last_name = strtolower(array_pop((explode(' ', $name))));
$first_name_letter = substr(strtolower(array_shift((explode(' ', $name)))), 0, 1);
$first_name = array_shift(explode(' ',$name));
$actualKey = $first_name . ' '. ucfirst($last_name);
$key = $first_name_letter . ' '. $last_name;
if (array_key_exists($key, $counts) === false){
$counts[$key] = 0;
$actualMap[$key] = $actualKey;
}
$counts[$key]++;
}
print_r($counts);
print_r($actualMap);
?>
我得到以下
Array ( [t jones] => 4 [k smith] => 2 ) Array ( [t jones] => Tim Jones [k smith] => Karl Smith )
我现在需要更换钥匙
【问题讨论】:
-
创建一个姓氏数组,然后调用
array_count_values。 -
向我们展示您到目前为止所做的事情,您需要搜索姓氏,因此您需要姓氏作为数组,然后使用php.net/manual/en/function.strpos.php
-
@Barmar 我将问题更新为正确的问题。请查看我的编辑。
-
创建一个
first-initial last-name的数组并在上面调用array_count_values。