Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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_Arrays_Duplicates - Fatal编程技术网

PHP:使用数组的所有副本创建单个数组

PHP:使用数组的所有副本创建单个数组,php,arrays,duplicates,Php,Arrays,Duplicates,我已经创建了一些数组,其中包含了以前一些数组的所有副本。例如: [475] => string(9) "038231370" [5135] => string(9) "038231370" [13236] => string(9) "038231370" [5575]=> string(9) "038231370" [4357]=> string(9) "038293950" [10509]=> string(9) "038293950" [603

我已经创建了一些数组,其中包含了以前一些数组的所有副本。例如:

[475] => string(9) "038231370" 
[5135] => string(9) "038231370" 
[13236] => string(9) "038231370" 
[5575]=> string(9) "038231370" 
[4357]=> string(9) "038293950" 
[10509]=> string(9) "038293950" 
[6031]=> string(10) "0038303163" 
[5529]=> string(10) "0038303163" 
[534]=> string(10) "0038303163" 
[5303] ...
正如你所能看到的,有些重复的是一倍多的。我想做的是创建不同的数组,其中包含相同的值及其键

function compare($array) {
    $per_array = array();
    $old_key    = NULL;
    $old_value    = NULL;
    foreach($array as $key => $value){

        if ($old_value === $value) {
            $per_array[$old_key]    = $old_value;
            $per_array[$key]        = $value;
        }   
        else {(DO SOME TESTS)unset($per_array);}


        $old_value  = $value;
        $old_key    = $key; 

    }   
}
但我似乎错过了什么。请告诉我,任何帮助都很重要

我期望的阵列的一个例子是:

per_数组(4)={[475]=>string(9)“038231370”[5135]=>string(9) “038231370”[13236]=>字符串(9)“038231370”[5575]=>字符串(9) “038231370”}

per_数组(3)={[4357]=>string(9)“038293950”[10509]=>string(9) “038293950”}


等等…

这里是一个简单的

  • 唯一值
  • 使用其键复制值
代码

请尝试以下代码:

$array_count = array();

foreach ($array as $key => $arr) :
    $array_count[$arr][] = $key;
endforeach;

举一个初始数组+结果数组的例子会很有帮助:)我不太理解你的问题。您要做的是从数组中删除重复值?不确定您的输入数组是什么。请参阅array_intersect()。我刚刚编辑了我的帖子@Lao我不想删除重复项,我想在取消设置数组之前运行一些检查。我有一个这种格式的数组,正如我在示例中所写的,包含字符串,我希望结果如图所示。我的目的是每次按数组()保存数组,其值仅与我在示例中编辑的相同。所以,
foreach($a as$k=>$v){in_数组($v,$u)?$d[$k]=$v:$u[$k]=$v;}
这不是我需要的,对吧?你所说的
每_数组()
是什么意思?它不在questionper中。数组是我使用的数组的名称。我的意思是,如果更简单的话,我想创建一个包含重复项键的永久数组:
peru数组(4)={475135132365575}
我正在处理您的示例。。如果我错了,请纠正我。。您需要所有重复阵列及其密钥??正确吗?如果您只需要重复的键,那么您可以拥有
array\u key($d)
它将返回重复项的所有键。我想可能是
foreach($key=>array$value){If($old\u value===$value){$per\u array[j]=$key;/$per\u array[$old\u key]=$old_value;//$per_数组[$key]=$value;$j++}否则{语句未设置($per_数组);$j=0;
array (size=12)
  'A' => int 0
  'B' => int 2
  'C' => int 1
  'D' => int 2
  'E' => int 3
  'F' => int 3
  'G' => int 3
  'H' => int 2
  'I' => int 3
  'J' => int 1
  'K' => int 0
  'L' => int 0

array (size=4)
  'A' => int 0
  'B' => int 2
  'C' => int 1
  'E' => int 3

array (size=8)
  'D' => int 2
  'F' => int 3
  'G' => int 3
  'H' => int 2
  'I' => int 3
  'J' => int 1
  'K' => int 0
  'L' => int 0
$array_count = array();

foreach ($array as $key => $arr) :
    $array_count[$arr][] = $key;
endforeach;