PHP唯一的键数组


php unique array by key

$custdata=array();
$custdata[] = array(
    "firstname" => $row['firstname'] ."<br /> <br />",
    "lastname" => $row['lastname'] ."<br /> <br />",
    "email" => $row['email'] ."<br />",
     "date" => $row['date'] ."<br />"
);

这是我的数组。我的人是重复的,所以我可以在数组中看到同一个人1,2,3或5次,如果我打印它。如何删除重复的值?但是我需要在日期之前完成。如果person存在于数组中,则只有最新的日期留在数组中。

使用日期作为数组的键

$custdata = array();
// a loop probably goes here    
if (empty($custdata[$row['date']])) {
    $custdata[$row['date']] = array(
        "firstname" => $row['firstname'] ."<br /> <br />",
        "lastname"  => $row['lastname'] ."<br /> <br />",
        "email"     => $row['email'] ."<br />",
        "date"      => $row['date'] ."<br />"
    );
}

最后,如果不想保留日期键,只需使用

$custdata = array_values($custdata);

另外,将<br>附加到数组值可能不是一个好主意。

最好在显示数组时附加<br>

看一下array_unique函数,因为我不知道你的确切需求。这个链接将帮助你理解array_unique函数如何在数组的数组上使用array_unique ?

如果我正确理解了你的问题,你需要做的就是简单地使用唯一密钥覆盖现有的人(例如:他的电子邮件)。下面是一个例子:

<?php
$persons = array();
$persons["123@gmail.com"] = array(
    "date"  => "1/1/1970",
    /** etc.. **/
);
$date = "2/1/1970";
// Override old person with new date
if (isset($person["123@gmail.com"])) {
    if ($person["123@gmail.com"]["date"] < $date) {
        $person["123@gmail.com"] = array(
            "date"  => $date,
            /** etc.. **/
        );
    }
}

您需要为$custdata上的每个人设置一个数组键。

$custdata['person_1'] = array();
$custdata['person_2'] = array();
....

也许可以用他们的电子邮件地址作为键。

你可以使用array_key_exists()来检查一个人是否已经被添加。http://php.net/manual/en/function.array-key-exists.php