如何消除阵列中的重复?(不是唯一的,但删除下一个值)PHP


How to remove duplication in arrays? (not turn unique, but remove the next value) PHP

我会尽量说得非常具体。听着,我有一个发送数组的输入:

echo "<input type='hidden' name='valortot[]'  class='valor$rowid' disabled>";

一旦我点击单选按钮,禁用将被删除,并设置值:

单选按钮:

<input  class='radio$rowid'  name='".$codintercot."[]' value='$mpreco' type='radio' onclick='calcval($rowid,$valortot)'>

$rowid是每行的id,$valortot是javascript获得的值,单击后插入隐藏输入。

Javascript:

 <script type="text/javascript">
             function calcval(valor,valortot){
                var valortot = valortot;
                var rowid = valor;
                var calcval = document.getElementsByClassName("valor"+rowid);
                for(var i = 0; i < calcval.length; i++) {
                    calcval[i].value=valortot;
                    calcval[i].disabled = false;
                }

             }

我的问题是,当我发送被复制的数组时,可能存在重复项,比如两个具有相同值的itens,但不是一个值如下的副本:

Array ( [0] => 2.44 [1] => 2.44 [2] => 3.7 [3] => 32.92 [4] => 32.92 )

奇怪的是,复制了2.44和32.92,但没有复制3.7,我怎么能跳过克隆?

编辑:

哦,我犯规了,我同时启用了3,而我应该只启用1。但还是要感谢你们。

您检查了吗:

http://php.net/manual/en/function.array-unique.php

<?php
    $input = array("a" => "green", "red", "b" => "green", "blue", "red");
    $result = array_unique($input);
    print_r($result);
?>

结果:

Array
(
    [a] => green
    [0] => red
    [1] => blue
)

由于您使用的是Javascript,因此您可以始终使用.indexOf(value).

for(var i = 1; i < array.length(); i++){
    if(array.indexOf(value) == -1) {
        array.push(value);
    } else {
        // Do nothing
    }
}

现在你不需要else语句,但它会给你一个想法。此外,从1开始循环,这样,如果数组位于元素0(也就是空的),if就不会麻烦检查重复的结果。

祝你好运!

编辑-逻辑错误。