首页 > 解决方案 > 删除数组特定值相同/唯一的两个维度数组元素(第一个匹配除外)

问题描述

例如,我有一个下面的二维数组,

$a = array(
    "one" => array (
        "id" => 111,
        "name" => "Jhon"
    ),
    "two" => array(
        "id" => 222,
        "name" => "Adam"
    ),
    "three" => array(
        "id" => 111,
        "name" => "Mark"
    ),
    "four" => array(
        "id" => 125,
        "name" => "Jhon"
    ),
    "five" => array(
        "id" => 111,
        "name" => "Jhon"
    ),
    "six" => array(
        "id" => 222,
        "name" => "Rock"
    ),
);

我想删除二维数组值相同/唯一的数组(第一个匹配除外)。例如,我想删除所有id键值相同的数组(第一个匹配除外)。如,数组id键值111(数组计数为 3)和222(数组计数为 2)。因此,在删除唯一键后id,结果数组应该如下,

$a = array(
    "one" => array (
        "id" => 111,
        "name" => "Jhon"
    ),
    "two" => array(
        "id" => 222,
        "name" => "Adam"
    ),
    "four" => array(
        "id" => 125,
        "name" => "Jhon"
    ),
);

标签: phparraysunique

解决方案


使用此代码完成您的任务

    <?php
$a = array(
    "one" => array (
        "id" => 111,
        "name" => "Jhon"
    ),
    "two" => array(
        "id" => 222,
        "name" => "Adam"
    ),
    "three" => array(
        "id" => 111,
        "name" => "Mark"
    ),
    "four" => array(
        "id" => 125,
        "name" => "Jhon"
    ),
    "five" => array(
        "id" => 111,
        "name" => "Jhon"
    ),
    "six" => array(
        "id" => 222,
        "name" => "Rock"
    ),
);
$unique = [];
$final_array = [];
foreach ($a as  $value) {
    if(in_array($value['id'],$unique)){
        continue;
    }
    else {
        $unique[] = $value['id'];
        $final_array[] = $value;
    }
} 
echo "<pre>";
print_r($final_array);
?>

在这里,我使用了一个唯一的命名数组,我在其中放置唯一键并循环遍历数组,如果 id 存在于唯一的则它跳过,否则我将其添加到最终数组中。希望这能解决您的问题。


推荐阅读