返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >如何在php中使用哈希表
  • 583
分享到

如何在php中使用哈希表

2023-06-14 16:06:50 583人浏览 安东尼
摘要

本篇文章为大家展示了如何在PHP中使用哈希表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、P

本篇文章为大家展示了如何在PHP中使用哈希表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

php框架有哪些

php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、Phalcon,Phalcon是运行速度最快的一个PHP框架。3、Symfony,Symfony是一款为WEB项目准备的PHP框架。4、Yii,Yii是一款快速、安全和专业的PHP框架。5、CodeIgniter,CodeIgniter是一款非常敏捷的开源PHP框架。6、CakePHP,CakePHP是一款老牌的PHP框架。7.Kohana,Kohana是一款敏捷但是功能强大的PHP框架。

1.内部组成

键(key):用于操作数据的标示,例如PHP数组中的索引,或者字符串键等等。

槽(slot/bucket):哈希表中用于保存数据的一个单元,也就是数据真正存放的容器

哈希函数(hash function):将key映射(map)到数据应该存放的slot所在位置的函数。

2.优势

通过关键值计算直接获取目标位置,对于海量数据中的精确查找有非常惊人的速度提升,理论上即使有无限的数据量,一个实现良好的哈希表依旧可以保持O(1)的查找速度,而O(n)的普通列表此时已经无法正常执行查找操作(实际上不可能,受到JVM可用内存限制,机器内存限制等)。

3.应用场景

在工程上,经常用于通过名称指定配置信息、通过关键字传递参数、建立对象与对象的映射关系等。目前最流行的NoSql数据库之一Redis,整体的使用了哈希表思想。

一言以蔽之,所有使用了键值对的地方,都运用到了哈希表思想。

4.使用实例

<?php class hashTable{    private $collection;    private $size = 100;     //初始化哈希表的大小    public function __construct($size='')    {        $bucketsSize = is_int($size)?$size:$this->size;        $this->collection = new SplFixedArray($bucketsSize);    }     //生成散列值,作为存储数据的位置    private function _hashAlGorithm($key)    {        $length = strlen($key);        $hashValue = 0;        for($i=0; $i<$length; $i++) {            $hashValue += ord($key[$i]);        }        return ($hashValue%($this->size));    }     //在相应的位置存储对应的值    public function set($key, $val)    {        $index = $this->_hashAlgorithm($key);        $this->collection[$index] = $val;    }     //根据键生成散列值,进而找到对应的值    public function get($key)    {        $index = $this->_hashAlgorithm($key);        return $this->collection[$index];    }     //删除某个值,成功返回1,失败返回0    public function del($key)    {        $index = $this->_hashAlgorithm($key);        if(isset($this->collection[$index])) {            unset($this->collection[$index]);            return 1;        } else {            return 0;        }    }     //判断某个值是否存在,存在返回1, 不存在返回0    public function exist($key)    {        $index = $this->_hashAlgorithm($key);        if($this->collection[$index]){            return 1;        } else {            return 0;        }    }     //返回key的个数    public function size()    {        $size = 0;        $length = count($this->collection);        for($i=0; $i<$length; $i++) {            if($this->collection[$i]) {                $size++;            }        }        return $size;    }     //返回value的序列    public function val()    {        $size = 0;        $length = count($this->collection);        for($i=0; $i<$length; $i++) {            if($this->collection[$i]) {                echo $this->collection[$i]."<br />";            }        }    }     //排序输出    public function sort($type=1)    {        $length = count($this->collection);        $temp = array();        for($i=0; $i<$length; $i++) {            if($this->collection[$i]) {                $temp[] = $this->collection[$i];            }        }         switch ($type) {            case 1:                //正常比较                sort($temp, SORT_REGULAR);                break;            case 2:                //按照数字比较                sort($temp, SORT_NUMERIC);                break;            //按照字符串进行比较            case 3:                sort($temp, SORT_STRING);                break;            //根据本地字符编码环境进行比较            case 4:                sort($temp, SORT_LOCALE_STRING);                break;         }        echo "<pre>";        print_r($temp);    }     //逆序输出    public function rev($type=1)    {        $length = count($this->collection);        $temp = array();        for($i=0; $i<$length; $i++) {            if($this->collection[$i]) {                $temp[] = $this->collection[$i];            }        }         switch ($type) {            case 1:                //正常比较                rsort($temp, SORT_REGULAR);                break;            case 2:                //按照数字比较                rsort($temp, SORT_NUMERIC);                break;            //按照字符串进行比较            case 3:                rsort($temp, SORT_STRING);                break;            //根据本地字符编码环境进行比较            case 4:                rsort($temp, SORT_LOCALE_STRING);                break;         }        echo "<pre>";        print_r($temp);    }  } //简单的测试$list = new hashTable(200);$list->set("zero", "zero compare");$list->set("one", "first test");$list->set("two", "second test");$list->set("three", "three test");$list->set("four", "fouth test");echo $list->val();echo "after sorted : <br />";$list->rev(3);

上述内容就是如何在php中使用哈希表,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: 如何在php中使用哈希表

本文链接: https://lsjlt.com/news/273110.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在php中使用哈希表
    本篇文章为大家展示了如何在php中使用哈希表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、P...
    99+
    2023-06-14
  • C#中如何使用哈希表
    这篇文章将为大家详细讲解有关C#中如何使用哈希表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在.NET Framework中,Hashtable是System.Collections命名空...
    99+
    2023-06-18
  • 如何在mysql中使用哈希索引
    这期内容当中小编将会给大家带来有关如何在mysql中使用哈希索引,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、Hash索引应进行二次搜索。使用哈希索引两次搜索,第一次找到相应的行,第二次读取数据,但频...
    99+
    2023-06-15
  • JavaScript如何实现哈希表
    这篇文章将为大家详细讲解有关JavaScript如何实现哈希表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、哈希表原理哈希表是一种非常重要的数据结构,几乎所有的编程语言都有直接或者间接的应用这种数据结...
    99+
    2023-06-22
  • php中哈希表指的是什么
    这篇文章给大家分享的是有关php中哈希表指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象...
    99+
    2023-06-14
  • 怎么在Java中实现哈希表
    本篇文章为大家展示了怎么在Java中实现哈希表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、哈希表头插法放入元素public class HashBuck {&nb...
    99+
    2023-06-15
  • JAVA哈希表如何初始化
    在Java中,可以使用HashMap类来初始化哈希表。HashMap类是Java集合框架中的一部分,它实现了Map接口,并且基于哈希...
    99+
    2023-09-09
    JAVA
  • 一文详解Python中哈希表的使用
    目录1. 前言2. 哈希表2.1 哈希函数2.2 哈希算法2.3 常见哈希算法2.4 哈希冲突3.总结1. 前言 哈希表或称为散列表,是一种常见的、使用频率非常高的数据存储方案。 哈...
    99+
    2024-04-02
  • PHP如何解决哈希冲突
    今天小编给大家分享一下PHP如何解决哈希冲突的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。链地址法链地址法是最简单而且最常见...
    99+
    2023-07-06
  • 如何在mysql中创建哈希索引
    本篇文章为大家展示了如何在mysql中创建哈希索引,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、说明如果存储引擎不支持hash索引,并且想提高hash索引带来的性能,则可以模拟InnoDB制作哈...
    99+
    2023-06-15
  • 如何在python中映射哈希散列
    今天就跟大家聊聊有关如何在python中映射哈希散列,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,...
    99+
    2023-06-14
  • Java哈希表和有序表如何实现
    这篇文章主要介绍“Java哈希表和有序表如何实现”,在日常操作中,相信很多人在Java哈希表和有序表如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java哈希表和有序表如何实现”的疑惑有所帮助!接下来...
    99+
    2023-07-06
  • c语言哈希链表如何建立
    在C语言中,可以通过结构体和指针来实现哈希链表的建立。首先,定义一个哈希链表的节点结构体,包括键值对的数据和指向下一个节点的指针:`...
    99+
    2023-08-25
    c语言
  • 如何使用 Python 检查 sum.golang.org 中的 go.mod 哈希值?
    php小编西瓜在这里为大家介绍如何使用Python检查sum.golang.org中的go.mod哈希值。sum.golang.org是一个用于验证Go模块的哈希值的官方服务,它可以帮...
    99+
    2024-02-09
    overflow
  • C语言中如何利用哈希表实现通讯录
    这篇“C语言中如何利用哈希表实现通讯录”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中如何利用哈希表实现通讯录”文章吧...
    99+
    2023-06-16
  • 如何使用Go语言构建高效的云上哈希表?
    随着云计算技术的广泛应用,云上哈希表成为了云计算中的重要数据结构之一。而在构建高效的云上哈希表中,Go语言则是一种非常适合的语言。本文将介绍如何使用Go语言构建高效的云上哈希表。一、云上哈希表概述云上哈希表是一种基于云计算技术实现的分布式哈...
    99+
    2023-05-17
    Go语言 构建 云上哈希表
  • Java真题实练掌握哈希表的使用
    目录1.多数元素题目描述思路详解代码与结果2.数组中的k-diff数对题目描述思路详解代码与结果3.缺失的第一个正数题目描述思路详解代码与结果1.多数元素 题目描述 思路详解 这个...
    99+
    2024-04-02
  • PHP如何计算文件的sha1哈希值
    这篇文章将为大家详细讲解有关PHP如何计算文件的sha1哈希值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 计算文件 SHA1 哈希值 简介 SHA1(安全哈希算法 1)是一种用于计算文件或数据的...
    99+
    2024-04-02
  • C++数据结构之哈希表如何实现
    本篇内容主要讲解“C++数据结构之哈希表如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++数据结构之哈希表如何实现”吧!哈希表概念二叉搜索树具有对数时间的表现,但这样的表现建立在一个假...
    99+
    2023-07-05
  • C++中使用哈希表(unordered_map)的一些常用操作方法
    目录1.建立基本数据类型的哈希表2.向哈希表中添加元素1).insert 函数2).用数组方法直接添加3.成员函数begin(),end()函数find()查找函数count() 查...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作