Php 多维数组复制-性能

Php 多维数组复制-性能,php,performance,algorithm,multidimensional-array,Php,Performance,Algorithm,Multidimensional Array,检查多维数组是否包含2个或多个相等值且仅返回第一个值的最佳方法是什么 例:我有一系列的人 [0][firstName] = 'John'; [0][lastName] = 'Doe'; [N][firstName] = 'Marco'; [N][lastName] = 'Polo'; [120][firstName] = 'John'; [120][lastName] = 'Doe'; 应检测到索引120是重复的,并将其删除 我在寻找最好的性能,我不想在数组上循环并每次检查是否有值

检查多维数组是否包含2个或多个相等值且仅返回第一个值的最佳方法是什么

例:我有一系列的人

[0][firstName] = 'John';
[0][lastName]  = 'Doe';

[N][firstName] = 'Marco';
[N][lastName]  = 'Polo';

[120][firstName] = 'John';
[120][lastName]  = 'Doe';
应检测到索引120是重复的,并将其删除

我在寻找最好的性能,我不想在数组上循环并每次检查是否有值

有更快的吗?

它基本上是通过排序和排序后的迭代来实现的,重复项彼此相邻,因此很容易检测到它们

然而,它也可以通过在迭代时将所有元素存储到,并在元素已经存在的情况下中断来平均和额外的空间来完成

如果以后需要存储每个元素的原始索引,并且不使用索引作为键,则可能还需要存储该索引

伪代码:

它基本上是通过排序和排序后的迭代来实现的,重复项彼此相邻,因此很容易检测到它们

然而,它也可以通过在迭代时将所有元素存储到,并在元素已经存在的情况下中断来平均和额外的空间来完成

如果以后需要存储每个元素的原始索引,并且不使用索引作为键,则可能还需要存储该索引

伪代码:

你可以试试

// Generate Possible name with duplicate
$names = array("John","Doe","Polo","Marco","Smith");
$array = array();

for($i = 0; $i < 20; $i ++) {
    $key = mt_rand(0, 1000);
    $array[$key]["firstName"] = $names[array_rand($names)];
    $array[$key]["lastName"] = $names[array_rand($names)];
}

// Start Sorting process
ksort($array);

// Start Storage
$data = $hash = array();

// Loop and porpulate new array
foreach ( $array as $k => $v ) {
    $h = sha1($v['firstName'] . $v["lastName"]);
    isset($hash[$h]) or $data[$k] = $v and $hash[$h] = 1;
}

var_dump($data);
你可以试试

// Generate Possible name with duplicate
$names = array("John","Doe","Polo","Marco","Smith");
$array = array();

for($i = 0; $i < 20; $i ++) {
    $key = mt_rand(0, 1000);
    $array[$key]["firstName"] = $names[array_rand($names)];
    $array[$key]["lastName"] = $names[array_rand($names)];
}

// Start Sorting process
ksort($array);

// Start Storage
$data = $hash = array();

// Loop and porpulate new array
foreach ( $array as $k => $v ) {
    $h = sha1($v['firstName'] . $v["lastName"]);
    isset($hash[$h]) or $data[$k] = $v and $hash[$h] = 1;
}

var_dump($data);

既然你在寻找最好的表现。。。你已经有了什么?因为你正在寻找最好的表现。。。你已经有什么了?