gpt4 book ai didi

php - 从 PHP 数组中删除相似的元素

转载 作者:可可西里 更新时间:2023-11-01 00:24:30 24 4
gpt4 key购买 nike

我有一个结构如下的数组:

$arrNames = array(

array('first'=>'John', 'last'=>'Smith', 'id'=>'1'),
array('first'=>'John', 'last'=>'Smith', 'id'=>'2'),
array('first'=>'John', 'last'=>'Smith', 'id'=>'3')

)

我需要删除名字和姓氏相同的相似元素。通常,我会使用 array_unique 但元素并不是完全唯一的,因为每个元素都有一个唯一的 ID。我不在乎保留哪个 ID。我只需要数组看起来像这样:

$arrNames = array(

array('first'=>'John', 'last'=>'Smith', 'id'=>'1') // can be any id from the original array

)

有没有快速的方法来完成这个?我的第一个想法是使用类似冒泡排序的方法,但我想知道是否有更好(更快)的方法。生成的数组被添加到下拉列表框中,重复的条目使一些用户感到困惑。选择记录后,我正在使用 ID 从数据库中拉回记录。因此,它必须包含在数组中。

最佳答案

<?php

$arrNames = array(
array('first'=>'John', 'last'=>'Smith', id=>'1'),
array('first'=>'John', 'last'=>'Smith', id=>'2'),
array('first'=>'John', 'last'=>'Smith', id=>'3')
);

$arrFound = array();
foreach ($arrNames as $intKey => $arrPerson) {
$arrPersonNoId = array(
'first' => $arrPerson['first'],
'last' => $arrPerson['last']
);
if (in_array($arrPersonNoId, $arrFound)) {
unset($arrNames[$intKey]);
} else {
$arrFound[] = $arrPersonNoId;
}
}
unset($arrFound, $intKey, $arrPerson, $arrPersonNoId);

print_r($arrNames);

这绝对有效,是否是最佳方法还有待商榷......

Codepad

关于php - 从 PHP 数组中删除相似的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9774692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com