这应该适合你:
这里我首先array_slice()
用来获取迭代当前元素之前的所有元素的数组,例如
iteration value | sliced array ----------------------------------- sara | [] jorj | [sara]
然后我使用这个数组array_filter()
,只保持值等于当前迭代值,所以我可以告诉当前值之前数组中有多少相同的值.
现在我只需要有count()
多少,如果有多于1,我们也会在输出中打印它.
码:
$arr = array('sara','jorj','sara','sara','jorj','eli','ana'); foreach($arr as $key => $name) { $count = count(array_filter(array_slice($arr, 0, $key), function($v)use($name){ return $v == $name; })) + 1; echo $name . ($count > 1 ? " - $count" : "") . PHP_EOL; }
输出:
sara jorj sara - 2 sara - 3 jorj - 2 eli ana