【发布时间】:2015-12-15 15:04:33
【问题描述】:
我有以下多维数组,我需要对其进行迭代,只要有重复的名称,就会在名称中添加一个计数器。
[1] => Array
(
[0] => Array
(
[clientName] => John Smith
[clientType] => 0
[clientDOB] => 1980-10-14
)
)
[2] => Array
(
[0] => Array
(
[clientName] => John Smith
[clientType] => 0
[clientDOB] => 1970-01-01
)
[1] => Array
(
[clientName] => Jeremy White
[clientType] => 2
[clientDOB] => 2015-08-19
)
)
我使用的代码是这样的:
$finalNames = array_map(function ($item) use (&$namesCount) {
if (!isset($namesCount[$item['clientName']])) {
$namesCount[$item['clientName']] = 0;
}
$namesCount[$item['clientName']]++;
$item['clientName'] = $item['clientName'] . ' ' . $namesCount[$item['clientName']];
return $item;
}, $arrayOfTravellers);
array_map(function($item, $key) use ($namesCount, &$finalNames) {
$finalNames[$key]['clientName'] = $namesCount[$item['clientName']] == 1
? str_replace(' 1', '', $finalNames[$key]['clientName'])
: $finalNames[$key]['clientName'];
}, $arrayOfNames, array_keys($arrayOfTravellers));
返回一堆错误,例如: 注意:未定义索引:第 330 行 /Applications/MAMP/htdocs/europatours/functions/reportsFunctions.php 中的 clientName
我的假设是代码不适合多维数组。有人可以帮忙吗?我只需要在存在重复名称的情况下保留数组的完整结构,添加一个计数器,例如 John Smith 1, John Smith 2,而 Jeremy White 仍然没有计数器。
【问题讨论】:
-
你有没有尝试过实现目标?
-
请阅读how do i ask a good Question,因为您的问题没有任何努力
-
我只是想知道你为什么要这样做..这些人的名字不是唯一的,也不应该是唯一的..
-
是的,但我尝试过的逻辑是愚蠢的,代码也很尴尬!哈哈
-
不要担心乱码,至少我们可以看一看,总比没有代码好