【发布时间】:2017-06-07 14:54:28
【问题描述】:
我有一个带有一些重复子数组的多维数组:
$data = array(
2 => array (
'User' => 'cat',
'File_name' => 'cat.docx',
'Document' => 'Document1',
'Date' => '2017-03-02',
'Pages' => 1
),
3 => array (
'User' => 'dog',
'File_name' => 'dog.docx',
'Document' => 'Document2',
'Date' => '2017-03-02',
'Pages' => 3
),
4 => array (
'User' => 'shark',
'File_name' => 'shark.docx',
'Document' => 'Document3',
'Date' => '2017-03-01',
'Pages' => 5
),
5 => array (
'User' => 'dog',
'File_name' => 'dog.docx',
'Document' => 'Document2',
'Date' => '2017-03-02',
'Pages' => 3
),
6 => array (
'User' => 'dog',
'File_name' => 'dog.docx',
'Document' => 'Document2',
'Date' => '2017-03-02',
'Pages' => 3
),
//...
);
我可以识别出重复的项目:
$final = $dupli = array();
foreach ($data as $key => $array ) {
if(!in_array($array, $final)){
$final[$key] = $array;
}
else
{
$dupli[$key] = $array;
}
}
print_r($dupli);
但我想知道找到的第一个子数组(this 的键)是什么索引,作为消息,例如:
$final = $dupli = array();
foreach ($data as $key => $array ) {
if(!in_array($array, $final)){
$final[$key] = $array;
}
else
{
$dupli[$key] = $array;
echo "Line " . $key . " duplicated row, the original row is: " . $originalkey;
}
}
输出:
Line 5 duplicated row, the original row is: 3
Line 6 duplicated row, the original row is: 3
【问题讨论】:
-
当 user = cat 时,这是否意味着其他值也相等,或者它们可能不同?
-
子数组中的所有项必须相等
-
我理解,但在您的示例中,对于所有带有 user=cat 的记录,例如子数组的其他元素都是相等的。这总是正确的还是子数组也可以是
user=cat, file_name=xmas.docx, document=somethingelse等等 -
用户和文件名(以及其他)没有关系,只是和例子。
标签: php multidimensional-array duplicates