GVKun编程网logo

PHP数组去重比较快的实现方式(php数组去重的方法)

27

本文将为您提供关于PHP数组去重比较快的实现方式的详细介绍,我们还将为您解释php数组去重的方法的相关知识,同时,我们还将为您提供关于Java数组去重的实现方法、php数组去重的方法参考(一维数组去重

本文将为您提供关于PHP数组去重比较快的实现方式的详细介绍,我们还将为您解释php数组去重的方法的相关知识,同时,我们还将为您提供关于Java数组去重的实现方法、php 数组去重的方法参考(一维数组去重、二维数组去重)、php 数组去重,一维数组去重,二维数组去重、PHP数组分页的实现方式有哪些?的实用信息。

本文目录一览:

PHP数组去重比较快的实现方式(php数组去重的方法)

PHP数组去重比较快的实现方式(php数组去重的方法)

概述

使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组。这个函数大多数情况下都能工作得很好。但是,如果你尝试在一个大的数组里使用array_unique()函数,它会运行地慢一些。

有一个比较好而且更快的函数array_flip()来替代使用array_unique()函数来创建唯一的数组。这个魔法般的函数会交换数组里面每一个元素的键和值,因为键值必须唯一,因此,你会得到跟array_unique()函数一样的结果。

更快的方式实现PHP数组去重

/* 创建一个包含重复值的,一共四个元素的数组 */
$array = array(''green'',''blue'',''orange'',''blue'');
/* 翻转数组,你将会得到唯一键值的数组
array(''green''=>0,''blue''=>1,''orange''=>2); */
$array = array_flip($array);
/* 然后再翻转一次,将键和值重新放置,然后得到数组:array(0=>''green'',1=>''blue'',2=>''orange''); */
$array = array_flip($array);

因为我们已经移除了一些元素,因此数组看起来不是正常的序列。比如我们可能会得到:array(0=>''A'',2=>''B'',5=>''C'');。在某些情况下,这不是一个问题,但是如果你需要数组的键值保持数字的序列,你可以使用一到两种方法解决键值乱序的问题。

使用array_merge修复数组的keys

添加array_flip之后的函数,将会对数组的键值排序并且让它们恢复到正常的序列,如:0,1,2,3…

$array = array(''green'',''blue'',''orange'',''blue'');
$array = array_flip($array);
$array = array_flip($array);
/* 使用array_merge()函数修复键值*/
$array = array_merge($array); 
 

第二种方式,使用array_keys

注意,这种修复数组键值的方法比使用array_merge()函数稍微快了一点。你也可以在最后一步结合使用array_keys()函数(此函数返回翻转后的值)。然后当你翻转数组的值,键值就会根据顺序创建。

$array = array(''green'',''blue'',''orange'',''blue'');
$array = array_flip($array);
/* 跟第一个例子一样,但是现在我们先提取数组的键值 */
$array = array_keys($array); 

结论

非常简单,比起在大数组使用array_unique函数,有了一个有效的性能提升。

您可能感兴趣的文章:
  • php数组去重实例及分析
  • php冒泡排序、快速排序、快速查找、二维数组去重实例分享
  • php数组去重的函数代码
  • php三维数组去重(示例代码)
  • PHP二维数组去重算法
  • php数组去重复数据示例
  • PHP二维数组去重实例分析
  • PHP实现二维数组去重功能示例
  • PHP编程快速实现数组去重的方法详解
  • PHP数组去重的更快实现方式分析

Java数组去重的实现方法

Java数组去重的实现方法

1、循环比较

循环对比每个元素的值是否一致,这个就不过多去介绍,主要是第2种方法

2、利用hashSet去重

hashSet是一个没有重复元素的集合,由hashMap实现的,无序,并且允许null,但只允许一个null值。 下面贴上代码,亲测可用。

public boolean checkIsRepeat(String[] arrs){
 
HashSet<string> hashSet = new HashSet();
for(int i = 0 ; i <h2>java基本数据类型有哪些</h2>
<p>Java的基本数据类型分为:</p>
<p>1、整数类型,用来表示整数的数据类型。</p>
<p>2、浮点类型,用来表示小数的数据类型。</p>
<p>3、字符类型,字符类型的关键字是“char”。</p>
<p>4、布尔类型,是表示逻辑值的基本数据类型。</p></string>
登录后复制

以上就是Java数组去重的实现方法的详细内容,更多请关注php中文网其它相关文章!

php 数组去重的方法参考(一维数组去重、二维数组去重)

php 数组去重的方法参考(一维数组去重、二维数组去重)

本文介绍下,对php数组去除重复的方法,包括一维数组的去重、二维数组的去重。有需要的朋友参考下。

首先,来看一维数组重复项的去除方法。

使用array_unique函数,例如:

<?php
  $aa=array("apple","banana","pear","apple","wail","watermalon");
  $bb=array_unique($aa);
  print_r($bb);
  //by bbs.it-home.org
?>
登录后复制

输出结果: Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 。

再来看下二维数组重复项的去除方法。

对于二维数组,要分两种情况讨论: 一种是因为某一键名的值不能重复,删除重复项; 另一种因为内部的一维数组不能完全相同,而删除重复项。

通过具体的例子加以说明。

1,因为某一键名的值不能重复,删除重复项。

立即学习“PHP免费学习笔记(深入)”;

<?php
 function assoc_unique($arr, $key)
  {
    $tmp_arr = array();
    foreach($arr as $k => $v)
   {
      if(in_array($v[$key], $tmp_arr))//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
     {
        unset($arr[$k]);
     }
   else {
       $tmp_arr[] = $v[$key];
     }
   }
 sort($arr); //sort函数对数组进行排序
 return $arr;
 }

 $aa = array(
 array(''id'' => 123, ''name'' => ''张三''),
 array(''id'' => 123, ''name'' => ''李四''),
 array(''id'' => 124, ''name'' => ''王五''),
 array(''id'' => 125, ''name'' => ''赵六''),
 array(''id'' => 126, ''name'' => ''赵六'')
 );
 $key = ''id'';
 assoc_unique(&$aa, $key);
 print_r($aa);
 //by bbs.it-home.org
?>
登录后复制

输出结果: Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

2,因内部的一维数组不能完全相同,而删除重复项

<?php
 function array_unique_fb($array2D){
      foreach ($array2D as $v){
          $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
          $temp[] = $v;
      }
      $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
     foreach ($temp as $k => $v){
         $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
     }
     return $temp;
 }

 $aa = array(
 array(''id'' => 123, ''name'' => ''张三''),
 array(''id'' => 123, ''name'' => ''李四''),
 array(''id'' => 124, ''name'' => ''王五''),
 array(''id'' => 123, ''name'' => ''李四''),
 array(''id'' => 126, ''name'' => ''赵六'')
 );
 $bb=array_unique_fb($aa);
 print_r($bb);
 //by bbs.it-home.org
?>
登录后复制

输出结果:

Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )


php 数组去重,一维数组去重,二维数组去重

php 数组去重,一维数组去重,二维数组去重

php 数组去重

一维数组

方法1:

array_unique($mobile_array);

方法2:

$mobile_array = array_flip($mobile_array);
$mobile_array = array_keys($mobile_array);

两方法比较

对于批量来说 后者效率更高,前者用起来挺方便

二维数组

没有现成的方法,用以下方法处理下

/**
 * 二位数组去除重复值
 * @param $arr 传入数组
 * @param $key 判断的key值
 * @return array
 */
function array_unset($arr,$key){   //$arr->传入数组   $key->判断的key值
    //建立一个目标数组
    $res = array();
    foreach ($arr as $value) {
        //查看有没有重复项
        if(isset($res[$value[$key]])){
            //有:销毁
            unset($value[$key]);
        }else{
            $res[$value[$key]] = $value;
        }
    }
    return $res;
}

 

 

 

二维数组去重另外一种方法

 

最近用到了一个获取历史会议列表的问题,需要去这个多维数组去重后返回返回给客户端,这里使用了几个php的组装函数,分享下,示例代码如下:

 

$str = ''{
    "status": 0,
    "result": [
        {
            "hostName": "杨新",
            "pcode2": "41675441",
            "email": "xin.yang@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "杨新",
            "pcode2": "41675441",
            "email": "xin.yang@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "中信国安科技控股有限公司",
            "pcode2": "9730284461",
            "email": "liuxiao@gakj.xx.com",
            "selfName": "邵兵"
        },
        {
            "hostName": "中信国安科技控股有限公司",
            "pcode2": "9730284461",
            "email": "liuxiao@gakj.xx.com",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘惠",
            "pcode2": "64068956",
            "email": "huijie.liu@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘惠",
            "pcode2": "64068956",
            "email": "huijie.liu@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘凯南",
            "pcode2": "14818360",
            "email": "kainan.liu_3@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "刘凯南",
            "pcode2": "14818360",
            "email": "kainan.liu_3@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "宋纬奇",
            "pcode2": "62947142",
            "email": "weiqi.song@xx.cn",
            "selfName": "邵兵"
        },
        {
            "hostName": "宋纬奇",
            "pcode2": "62947142",
            "email": "weiqi.song@xx.cn",
            "selfName": "邵兵"
        }
    ],
    "content_type": "application/json"
}'';


$res = json_decode($str, true);

echo ''num: '' . count($res[''result'']);

print_r($res[''result'']);
echo "</br></br></br>";
$rrr = $res[''result''];

$serializeArrs = array_map(''serialize'', $rrr);

$uniqueArrs = array_unique($serializeArrs);

$unserializeArrs = array_map(''unserialize'', $uniqueArrs);

print_r($unserializeArrs);
echo "</br></br></br>";
echo json_encode($unserializeArrs);

 

 

关于php的序列化的确是几年前才使用的技术,目前大家更多的是使用json_encode,且后者效率也比php的序列化高。

序列化也还是很有用的。上面的例子中主要是函数array_map()和array_unique()的结合使用。

 

 

 

PHP数组分页的实现方式有哪些?

PHP数组分页的实现方式有哪些?

php 数组分页可通过以下方法实现:数组切片(array_slice()):根据偏移量和长度切分数组。外部迭代器(limititerator):使用迭代器遍历数组,设置偏移量和长度限制。内置函数(array_chunk()):将数组分成指定大小的块。本地实现:自定义函数实现分页算法,包括计算总页数、偏移量和返回分页后的数组。

PHP数组分页的实现方式有哪些?

PHP 数组分页的实现方式

分页是 web 开发中一个常见的需求,它可以将大量数据分成较小的块,从而提高页面加载速度和用户体验。在 PHP 中,有多种实现数组分页的方法。

数组切片

这是最简单的方法,使用 PHP 的 array_slice() 函数:

// 获取当前页
$currentPage = (isset($_GET[''page''])) ? (int) $_GET[''page''] : 1;

// 每页显示的记录数
$perPage = 10;

// 计算偏移量
$offset = ($currentPage - 1) * $perPage;

// 分页后的数组
$paginatedArray = array_slice($array, $offset, $perPage);
登录后复制

外部迭代器

PHP 中的标准类库提供了一个用于遍历数组的 LimitIterator 类:

立即学习“PHP免费学习笔记(深入)”;

use IteratorIterator;
use LimitIterator;

// 创建外部迭代器
$limitIterator = new LimitIterator(new ArrayIterator($array), $offset, $perPage);

// 分页后的数组
$paginatedArray = [];
foreach ($limitIterator as $item) {
    $paginatedArray[] = $item;
}
登录后复制

内置函数

PHP 7.1 及更高版本中引入了 array_chunk() 函数,它将数组分成指定大小的块:

// 分页后的数组
$paginatedArray = array_chunk($array, $perPage);
登录后复制

本地实现

也可以使用函数来实现自己的分页算法:

function paginate(array $array, int $currentPage, int $perPage): array
{
    $totalPages = ceil(count($array) / $perPage);

    if ($currentPage < 1 || $currentPage > $totalPages) {
        return [];
    }

    $offset = ($currentPage - 1) * $perPage;

    return array_slice($array, $offset, $perPage);
}
登录后复制

实战案例

假设我们有一个 $users 数组,包含 100 个用户,现在我们需要在每页显示 10 条数据:

// 获取当前页
$currentPage = (isset($_GET[''page''])) ? (int) $_GET[''page''] : 1;

// 分页后的用户数组
$paginatedUsers = paginate($users, $currentPage, 10);
登录后复制

然后,我们可以在页面上显示分页后的用户数据:

<ul>
    <?php foreach ($paginatedUsers as $user): ?>
        <li><?php echo $user[''name'']; ?></li>
    <?php endforeach; ?>
</ul>
登录后复制

分页控制可以根据需要实现,例如:

<nav aria-label="Pagination">
    <ul>
        <?php if ($currentPage > 1): ?>
            <li>
                <ahref="<?php echo "?page=" . ($currentPage - 1); ?>">Previous</a>
            </li>
        <?php endif; ?>

        <?php for ($i = 1; $i <= $totalPages; $i++): ?>
            <li>
                <ahref="<?php echo "?page=" . $i; ?>"><?php echo $i; ?></a>
            </li>
        <?php endfor; ?>

        <?php if ($currentPage < $totalPages): ?>
            <li>
                <ahref="<?php echo "?page=" . ($currentPage + 1); ?>">Next</a>
            </li>
        <?php endif; ?>
    </ul>
</nav>
登录后复制

以上就是PHP数组分页的实现方式有哪些?的详细内容,更多请关注php中文网其它相关文章!

关于PHP数组去重比较快的实现方式php数组去重的方法的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Java数组去重的实现方法、php 数组去重的方法参考(一维数组去重、二维数组去重)、php 数组去重,一维数组去重,二维数组去重、PHP数组分页的实现方式有哪些?等相关知识的信息别忘了在本站进行查找喔。

本文标签: