sch*_*nya 10 php arrays key duplicates
我有以下数组:
$myarray = Array("2011-06-21", "2011-06-22", "2011-06-22", "2011-06-23", "2011-06-23", "2011-06-24", "2011-06-24", "2011-06-25", "2011-06-25", "2011-06-26");
var_dump($myarray);
Run Code Online (Sandbox Code Playgroud)
结果:
Array (
[0] => 2011-06-21
[1] => 2011-06-22
[2] => 2011-06-22
[3] => 2011-06-23
[4] => 2011-06-23
[5] => 2011-06-24
[6] => 2011-06-24
[7] => 2011-06-25
[8] => 2011-06-25
[9] => 2011-06-26
)
Run Code Online (Sandbox Code Playgroud)
Tre*_*rey 22
function get_keys_for_duplicate_values($my_arr, $clean = false) {
if ($clean) {
return array_unique($my_arr);
}
$dups = $new_arr = array();
foreach ($my_arr as $key => $val) {
if (!isset($new_arr[$val])) {
$new_arr[$val] = $key;
} else {
if (isset($dups[$val])) {
$dups[$val][] = $key;
} else {
$dups[$val] = array($key);
// Comment out the previous line, and uncomment the following line to
// include the initial key in the dups array.
// $dups[$val] = array($new_arr[$val], $key);
}
}
}
return $dups;
}
Run Code Online (Sandbox Code Playgroud)
显然函数名有点长;)
现在$ dups将包含一个由重复值键入的多维数组,包含每个重复的键,如果发送"true"作为第二个参数,它将返回没有重复值的原始数组.
或者,您可以将原始数组作为参考传递,并在返回重复数组时相应地调整它
Fra*_*nes 13
我先回答第二个问题.您想使用array_keys指定的"search_value".
$keys = array_keys($array, "2011-06-29")
Run Code Online (Sandbox Code Playgroud)
在下面的示例中,$duplicates将包含重复值,同时$result包含不重复的值.要获得密钥,只需使用array_keys.
<?php
$array = array(
'a',
'a',
'b',
'c',
'd'
);
// Unique values
$unique = array_unique($array);
// Duplicates
$duplicates = array_diff_assoc($array, $unique);
// Unique values
$result = array_diff($unique, $duplicates);
// Get the unique keys
$unique_keys = array_keys($result);
// Get duplicate keys
$duplicate_keys = array_keys(array_intersect($array, $duplicates));
Run Code Online (Sandbox Code Playgroud)
结果:
// $duplicates
Array
(
[1] => a
)
// $result
Array
(
[2] => b
[3] => c
[4] => d
)
// $unique_keys
Array
(
[0] => 2
[1] => 3
[2] => 4
)
// $duplicate_keys
Array
(
[0] => 0
[1] => 1
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29555 次 |
| 最近记录: |