随着时代的发展,我们的编程技术也越来越多,对于PHP想必大家都很了解吧,我们这里就介绍一下PHP数组吧。PHP数组是最常见的批量数据存储结构,由于数组采用顺序存储,所以可以方便的进行随机存储。在很多语言中,数组都是静态的,必须在使用前指定数组的长度,而在PHP中,你完全不用操心这个问题,数组是完全动态的。你甚至可以这样来使用一个数组。
<ol class="dp-xml"> <li class="alt"><span><span>PHP CODE </span></span></li> <li class=""><span>// DEMO of Array </span></li> <li class="alt"><span>demo_array[] = 1; </span></li> <li class=""><span>demo_array[] = 2; </span></li> </ol>
然后,我们来模拟洗牌的过程,这实际上是若干次的两张牌交换的过程。我们产生两个在1~108之间的随机数,然后交换以这两个数为index的数组元素的值就可以了。因为要多次交换,我们可以把这个过程定义为一个函数。接着,就是把这108张牌分给4个人,实际上,只要前边的交换次数足够大,直接切成5份就OK了。不过为了更好的模拟现实和表现数组的特性,我们采用循环的方式来分发。就是每个人一次四张,然后一个人一张,庄家两张。好了,整个过程就是这样的了。下边我们通过程序来说明一些更为细节的东西。
<ol class="dp-xml"> <li class="alt"><span><span>PHP CODE </span></span></li> <li class=""> <span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">php</span></font></strong><span> </span> </li> <li class="alt"><span>/** ************************************************************ </span></li> <li class=""><span>* 一个使用数组来模拟麻将洗牌和发牌过程的例子 </span></li> <li class="alt"><span>* @ Easy@bjpeu.edu.cn </span></li> <li class=""><span>* @ 2003-6-3 </span></li> <li class="alt"><span>** *************************************************************/ </span></li> <li class=""><span> </span></li> <li class="alt"><span>// 换牌函数 </span></li> <li class=""><span>function swap() </span></li> <li class="alt"><span>{ </span></li> <li class=""><span>// 将$majiangArray定义为全局变量 </span></li> <li class="alt"><span>// 这样可以在函数中进行操作 </span></li> <li class=""><span>global $majiangArray; </span></li> <li class="alt"><span> </span></li> <li class=""><span>// 产生两个1到108的随机数 </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">index1</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">rand</font></span><span>( 1 , 108 ); </span> </li> <li class=""> <span>$</span><span class="attribute"><font color="#ff0000">index2</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">rand</font></span><span>( 1 , 108 ); </span> </li> <li class="alt"><span> </span></li> <li class=""><span>// 交换相应的数组元素的值 </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">tmp</font></span><span> = $majiangArray[ $index1 ]; </span> </li> <li class=""><span>$majiangArray[ $index1 ] = $majiangArray[ $index2 ]; </span></li> <li class="alt"><span>$majiangArray[ $index2 ] = $tmp; </span></li> <li class=""><span>} </span></li> <li class="alt"><span> </span></li> <li class=""><span>// 将数组的内容用相应的图片表示出来的函数 </span></li> <li class="alt"><span>function showArray( $arrayName ) </span></li> <li class=""><span>{ </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">count</font></span><span class="attribute-value"><font color="#0000ff">count</font></span><span> = count ( $arrayName ); </span> </li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">i</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">0</font></span><span> ; $i </span><span class="tag"><strong><font color="#006699"></font></strong></span><span> $count ; $i++ ) </span> </li> <li class="alt"><span>{ </span></li> <li class=""> <span>echo '</span><strong><font color="#006699"><span class="tag"><span class="tag-name">img</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">src</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"img/'. $arrayName[ $i ] .'"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> ';//显示相应的图片 </span> </li> <li class="alt"><span>} </span></li> <li class=""> <span>echo '</span><strong><font color="#006699"><span class="tag"><span class="tag-name">p</span><span class="tag">></span></span></font></strong><span>';//换行 </span> </li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"><span>// 主程序部分开始 </span></li> <li class=""><span> </span></li> <li class="alt"><span>// 初始化数组 </span></li> <li class=""><span>unset( $majiangArray ); </span></li> <li class="alt"><span>$majiangArray[] = '0'; // 数据从1开始存放,跳过0 </span></li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">i</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $i </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 3 ; $i++ )// 共有三种花色 </span> </li> <li class="alt"><span>{ </span></li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">j</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $j </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 9 ; $j++ )// 一个花色中有九种牌 </span> </li> <li class="alt"><span>{ </span></li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">k</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $k </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 4 ; $k++ )// 每种牌有四张 </span> </li> <li class="alt"><span>{ </span></li> <li class=""><span>$majiangArray[] = $i . '_' . $j . '.gif'; </span></li> <li class="alt"><span>} </span></li> <li class=""><span>} </span></li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"><span>// 开始洗牌 </span></li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">i</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $i </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 1000 ; $i ++ )// 循环变量i被重新赋值重用 </span> </li> <li class="alt"><span>{ </span></li> <li class=""><span>swap(); </span></li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"><span>// 初始化四个用户 </span></li> <li class=""><span>unset( $user1 ); </span></li> <li class="alt"><span>unset( $user2 ); </span></li> <li class=""><span>unset( $user3 ); </span></li> <li class="alt"><span>unset( $user4 ); </span></li> <li class=""><span> </span></li> <li class="alt"><span>// $seek是进度指针,纪录当前应该从那里发牌 </span></li> <li class=""> <span>$</span><span class="attribute"><font color="#ff0000">seek</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span>; </span> </li> <li class="alt"><span> </span></li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">i</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $i </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 3 ; $i++ )// 总共摸三次四张的 </span> </li> <li class="alt"><span>{ </span></li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">j</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $j </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 4 ; $j++ )// 四个人 </span> </li> <li class="alt"><span>{ </span></li> <li class=""> <span>for ( $</span><span class="attribute"><font color="#ff0000">k</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $k </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 4 ; $k++ )// 一次四张 </span> </li> <li class="alt"><span>{ </span></li> <li class=""> <span>$</span><span class="attribute"><font color="#ff0000">name</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">'user'</font></span><span>.$j; </span> </li> <li class="alt"><span>${$name}[] = $majiangArray[ $seek++ ]; </span></li> <li class=""><span>} </span></li> <li class="alt"><span>} </span></li> <li class=""><span>} </span></li> <li class="alt"><span> </span></li> <li class=""><span>// 然后一人一张 </span></li> <li class="alt"> <span>for ( $</span><span class="attribute"><font color="#ff0000">i</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">1</font></span><span> ; $i </span><span class="tag"><strong><font color="#006699"></font></strong></span><span>= 4 ; $i++ ) </span> </li> <li class=""><span>{ </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">name</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">'user'</font></span><span>.$i; </span> </li> <li class=""><span>${$name}[] = $majiangArray[ $seek++ ]; </span></li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"><span>// 最后庄家多摸一张 </span></li> <li class=""><span>$user4[] = $majiangArray[ $seek ]; </span></li> <li class="alt"><span> </span></li> <li class=""><span>// 分牌结束 显示结果 </span></li> <li class="alt"><span>showArray( $user1 ); </span></li> <li class=""><span>showArray( $user2 ); </span></li> <li class="alt"><span>showArray( $user3 ); </span></li> <li class=""><span>showArray( $user4 ); </span></li> <li class="alt"><span> </span></li> <li class=""> <span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span> </li> </ol>

PHPSession失效的原因包括配置错误、Cookie问题和Session过期。1.配置错误:检查并设置正确的session.save_path。2.Cookie问题:确保Cookie设置正确。3.Session过期:调整session.gc_maxlifetime值以延长会话时间。

在PHP中调试会话问题的方法包括:1.检查会话是否正确启动;2.验证会话ID的传递;3.检查会话数据的存储和读取;4.查看服务器配置。通过输出会话ID和数据、查看会话文件内容等方法,可以有效诊断和解决会话相关的问题。

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

在PHP中配置会话生命周期可以通过设置session.gc_maxlifetime和session.cookie_lifetime来实现。1)session.gc_maxlifetime控制服务器端会话数据的存活时间,2)session.cookie_lifetime控制客户端cookie的生命周期,设置为0时cookie在浏览器关闭时过期。

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。