这篇文章主要介绍了关于浅谈PHP源码十九:关于array_file,range函数,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
浅谈PHP源码十九:关于array_file,range函数
array_fill
(PHP 4 >= 4.2.0, PHP 5)
array_fill — 用给定的值填充数组
说明
array array_fill ( int start_index, int num, mixed value )
array_fill() 用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。注意 num 必须是一个大于零的数值,否则 PHP 会发出一条警告。
对于参数start_index,只能是字符串,整形,浮点型
其源码如下:
switch (Z_TYPE_PP(start_key)) {case IS_STRING:case IS_LONG:case IS_DOUBLE: ....... convert_to_long_ex(start_key); ......}
程序首先赋值给return_value第一个值,然后循环num – 1次: 给这个值添加refcount,并将它添加到return_value的Hash Table中
range
(PHP 3 >= 3.0.8, PHP 4, PHP 5)
range — 建立一个包含指定范围单元的数组
说明
array range ( mixed low, mixed high [, number step] )
range() 返回数组中从 low 到 high 的单元,包括它们本身。如果 low > high,则序列将从 high 到 low。
新参数: 可选的 step 参数是 PHP 5.0.0 新加的。
如果给出了 step 的值,它将被作为单元之间的步进值。step 应该为正值。如果未指定,step 则默认为 1。
从代码可以看出,本函数仅支持字符数组,浮点数组和整形数组,并且支持递增和递减两种形式(在版本4.0.1之后才有)
以字符数组为例:
if (Z_TYPE_P(zlow) == IS_STRING && Z_TYPE_P(zhigh) == IS_STRING && Z_STRLEN_P(zlow) >= 1 && Z_STRLEN_P(zhigh) >= 1) { int type1, type2; unsigned char *low, *high; long lstep = (long) step; type1 = is_numeric_string(Z_STRVAL_P(zlow), Z_STRLEN_P(zlow), NULL, NULL, 0); type2 = is_numeric_string(Z_STRVAL_P(zhigh), Z_STRLEN_P(zhigh), NULL, NULL, 0); if (type1 == IS_DOUBLE || type2 == IS_DOUBLE || is_step_double) { goto double_str; } else if (type1 == IS_LONG || type2 == IS_LONG) { goto long_str; } convert_to_string(zlow); // 转化为字符串,此函数的实现在zend_operators.c的536行:ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) convert_to_string(zhigh); low = (unsigned char *)Z_STRVAL_P(zlow); // 当所给字符串长度大于1时,取第一个字符 high = (unsigned char *)Z_STRVAL_P(zhigh); if (*low > *high) { // 递减数组 if (lstep <= 0) { err = 1; goto err; } for (; *low >= *high; (*low) -= (unsigned int)lstep) { add_next_index_stringl(return_value, low, 1, 1); if (((signed int)*low - lstep) < 0) { break; } } } else if (*high > *low) { // 递增数组 if (lstep <= 0) { err = 1; goto err; } for (; *low <= *high; (*low) += (unsigned int)lstep) { add_next_index_stringl(return_value, low, 1, 1); if (((signed int)*low + lstep) > 255) { // 只支持ASCII的255个字符 break; } } } else { // 开始和结束相等,则只返回包含一个元素的数组 add_next_index_stringl(return_value, low, 1, 1);}
对于浮点型和整形的处理基本类似,只有写入Hash Table的方法不同
浮点型用的是add_next_index_double
整形用的是add_next_index_long
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
浅谈PHP源码十八:关于array_diff_key,array_diff_assoc,array_udiff_assoc 函数
浅谈PHP源码十六:关于array_count_values函数
以上是浅谈PHP源码十九:关于array_file,range函数的详细内容。更多信息请关注PHP中文网其他相关文章!

phpientifiesauser'ssessionusessessionSessionCookiesAndSessionIds.1)whiwSession_start()被称为,phpgeneratesainiquesesesessionIdStoredInacookInAcookInamedInAcienamedphpsessidontheuser'sbrowser'sbrowser.2)thisIdAllowSphptptpptpptpptpptortoreTessessionDataAfromtheserverMtheserver。

PHP会话的安全可以通过以下措施实现:1.使用session_regenerate_id()在用户登录或重要操作时重新生成会话ID。2.通过HTTPS协议加密传输会话ID。3.使用session_save_path()指定安全目录存储会话数据,并正确设置权限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用会话构建高效购物车系统的步骤包括:1)理解会话的定义与作用,会话是服务器端的存储机制,用于跨请求维护用户状态;2)实现基本的会话管理,如添加商品到购物车;3)扩展到高级用法,支持商品数量管理和删除;4)优化性能和安全性,通过持久化会话数据和使用安全的会话标识符。

本文讨论了PHP中的crypt()和password_hash()之间的差异,以进行密码哈希,重点介绍其实施,安全性和对现代Web应用程序的适用性。

文章讨论了通过输入验证,输出编码以及使用OWASP ESAPI和HTML净化器之类的工具来防止PHP中的跨站点脚本(XSS)。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

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

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

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。