Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换数组中的重复字(不删除)_Php - Fatal编程技术网

Php 替换数组中的重复字(不删除)

Php 替换数组中的重复字(不删除),php,Php,我有一个数组,它有多组单词,其中一些可能是重复的,我想用word:duplicate替换数组中的重复单词,并保留一个原始单词。 因此,如果我有5个副本,我希望其中4个被替换为副本并保留原始副本 $my_array = (0=>'test', 1=>'test2',2=>'test3',3=>'test'); 正如您在我的数组中看到的,数组键0和3具有相同的值,我想用单词“duplicate”替换最后一个值 $my_array = (0=>'test', 1=>

我有一个数组,它有多组单词,其中一些可能是重复的,我想用word:duplicate替换数组中的重复单词,并保留一个原始单词。 因此,如果我有5个副本,我希望其中4个被替换为副本并保留原始副本

$my_array = (0=>'test', 1=>'test2',2=>'test3',3=>'test');
正如您在我的数组中看到的,数组键0和3具有相同的值,我想用单词“duplicate”替换最后一个值

$my_array = (0=>'test', 1=>'test2',2=>'test3',3=>'duplicate');

我尝试了不同的方法,但没有成功:(

试试这个,记住你访问过的价值观

$visited = array();
foreach($my_array as $key=>$val) {
    if(isset($visited[$val])) {
        $my_array[$key] = 'duplicate';
    } else {
        $visited[$val] = true;
    }
}

这里有一种方法:

<?php

$my_array = array(0=>'a', 1=>'a',2=>'b',3=>'c');

print_r($my_array);

$my_array2 = array_unique($my_array);

foreach($my_array as $key => $value) {
    if (!array_key_exists($key, $my_array2)) {
        $my_array[$key] = 'duplicate';
    }
}

print_r($my_array);

如果键不是数字且不是从0开始,则的复制不起作用。您更应该使用foreach。数组键不应在其中存储值。