PHP在数组中找到double值并枚举它们

时间:2017-03-27 13:25:33

标签: php arrays double enumeration

您好我期待找到一个简单的解决方案来查找和枚举双值。

array("Papples", "Gelato", "Gelato", "Banana", "Papples","Papples")

为:

array("Papples", "Gelato", "Gelato2", "Banana", "Papples2","Papples3")

我可以使用带有if的循环并写入第二个数组过程但是没有更好的解决方案吗?

谢谢!

3 个答案:

答案 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);

测试脚本:https://3v4l.org/iGf1s