Php 多维数组复制-性能
检查多维数组是否包含2个或多个相等值且仅返回第一个值的最佳方法是什么 例:我有一系列的人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是重复的,并将其删除 我在寻找最好的性能,我不想在数组上循环并每次检查是否有值
[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);
既然你在寻找最好的表现。。。你已经有了什么?因为你正在寻找最好的表现。。。你已经有什么了?