您好我期待找到一个简单的解决方案来查找和枚举双值。
array("Papples", "Gelato", "Gelato", "Banana", "Papples","Papples")
为:
array("Papples", "Gelato", "Gelato2", "Banana", "Papples2","Papples3")
我可以使用带有if的循环并写入第二个数组过程但是没有更好的解决方案吗?
谢谢!
答案 0 :(得分:1)
你可以尝试
<?php
$arr = array("Papples", "Gelato", "Gelato", "Banana", "Papples","Papples");
$countarray = array_count_values($arr);
$resultarray = array();
foreach ($countarray as $key=>$value) {
for ($i = 1; $i <= $value; $i++) {
$resultarray[]=$key.$i;
}
}
print_r($resultarray);
?>
答案 1 :(得分:1)
使用循环和mongo -u username -p password admin --eval "db.getSiblingDB('new_database').createUser({ user : 'new_user', pwd : 'new_password', roles : [{ role: 'readWrite', db: 'new_database'}]});"
,这并不困难并且速度非常快。
if
基本上这样做是为了始终将元素添加到新数组中,
显然,但修改与否。条件是$delicatessen = [
"Papples", "Gelato", "Gelato", "Banana", "Papples","Papples"
];
foreach ($delicatessen as $e) {
if (@$counter[$e]++) $e .= $counter[$e];
$new[] = $e;
}
数组
这将存储项目出现的次数。所有都是“创建的”
苍蝇“,PHP允许。
当我们检索$counter
时,此元素尚不存在,所以
返回值使条件失败。但是有副作用
在返回undef之后,它将会增加(使用$counter[$e]
)
现在++
将是$counter[$e]
。
如果在将来的迭代中再次访问此返回的值
1
会使条件通过,副作用会影响该点
执行1
语句if
已经是$counter[$e]
。该
语句将此数字连接到元素的末尾。
这样,第一次没有连接,但有 副作用。在下一次迭代中,数字连接到 元件。
这里使用2
运算符来抑制PHP通知。既然你是
在第一次通过时处理未定义的元素,你会收到通知。
脚本不会破坏。当然应该使用这个操作符
谨慎,但在这种情况下,它真的有助于简化代码,
使它不那么严格。
答案 2 :(得分:0)
$arr = array("Papples", "Gelato", "Gelato", "Banana", "Papples","Papples");
$arr_count = array_count_values($arr);
$new_arr = array();
foreach($arr_count as $key=>$val){
if($val > 1){
$k = 1;
for($i=0; $i<$val; $i++){
if($i==0){
$new_arr[] = $key;
}else{
$new_arr[] = $key.++$k;
}
}
}else{
$new_arr[] = $key;
}
}
echo "<pre>"; print_r($new_arr);