PHP数据集构建JSON及新数组介绍
代码如下 | 复制代码 |
function RecordToJson($recordset) |
PHP默认的结果集数组有数字索引,下面函数可以去除数字索引,只保留字段索引:
代码如下 | 复制代码 |
|
上传操作代码
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
html
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
一些常见的上传文件时错误代码
0 | UPLOAD_ERR_OK | 文件成功上传
1 | UPLOAD_ERR_INI_SIZE | Size exceeds upload_max_filesize in php.ini.
2 | UPLOAD_ERR_FORM_SIZE | Size exceeds MAX_FILE_SIZE specified in HTML form.
3 | UPLOAD_ERR_PARTIAL | 文件没有完整上传
4 | UPLOAD_ERR_NO_FILE | 没有上传文件
5 | UPLOAD_ERROR_E | As expliained by @Progman, removed in rev. 81792
6 | UPLOAD_ERR_NO_TMP_DIR | 找不到临时文件夹
7 | UPLOAD_ERR_CANT_WRITE | 磁盘不可写
8 | UPLOAD_ERR_EXTENSION | File upload stopped by extension.
is_file 只判断文件是否存在;
代码如下 | 复制代码 |
输出:test.txt is a regular file |
file_exists 判断文件是否存在或者是目录是否存在;
代码如下 | 复制代码 |
<?php 输入 1 |
is_dir 判断目录是否存在;
例子
代码如下 | 复制代码 |
<?php 输出: images is a directory |
查看手册,虽然这两个函数的结果都会被缓存,但是is_file却快了N倍。
还有一个值得注意的:
文件存在的情况下,is_file比file_exists要快N倍;
文件不存在的情况下,is_file比file_exists要慢;
结论是,file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了
测试
代码如下 | 复制代码 |
文件存在(当前目录) |
取部份字符串。
语法: string substr(string string, int start, int [length]);
返回值: 字符串
函数种类: 资料处理
内容说明
本函数将字符串 string 的第 start 位起的字符串取出 length 个字符。若 start 为负数,则从字符串尾端算起。若可省略的参数 length 存在,但为负数,则表示取到倒数第 length 个字符。
使用范例
代码如下 | 复制代码 |
<? |
上面只支持英文不支持中文
截取GB2312中文字符串
代码如下 | 复制代码 |
< ?php |
截取utf8编码的多字节字符串
代码如下 | 复制代码 |
< ?php |
/*
* 功能: 作用跟substr一样,除了它不会造成乱码
* 参数:
* 返回:
*/
代码如下 | 复制代码 |
function utf8_substr( $str , $start , $length=null ){ // 如果参数start是正数 // 如果第1字节就不是 完整字符的首字节, 再往后截取大约6字节 // 判断前6字节是否符合utf8规则 // 判断后6字节是否符合utf8规则 return $res; |
测试数据::
代码如下 | 复制代码 |
<?php $str = 'dfjdjf测13f试65&2数据fdj(1就mfe&……就'; var_dump( utf8_substr( $str , 22 , 12 ) ); echo ' <br /> '; var_dump( utf8_substr( $str , 22 , -6 ) ); echo ' <br /> '; var_dump( utf8_substr( $str , 9 , 12 ) ); echo ' <br /> '; var_dump( utf8_substr( $str , 19 , 12 ) ); echo ' <br /> '; var_dump( utf8_substr( $str , 28 , -6 ) ); echo ' <br /> '; |
显示结果::(截取无乱码, 欢迎大家测试, 提交bug)
string(12) "据fdj"
string(26) "据fdj(1就mfe&…"
string(13) "13f试65&2数"
string(12) "数据fd"
string(20) "dj(1就mfe&…"
把我常用的分享出来
下面我们再来看中文截函数吧。
代码如下 | 复制代码 |
function MooCutstr($string, $length, $dot = ' ...') { if(strlen($string) <= $length) { return $strcut.$dot; |
分享一个实际在用的函数:
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
/*比file_get_contents稳定的多!$timeout为超时时间,单位是秒,默认为1s。*/
代码如下 | 复制代码 |
function curl_get_contents($url,$timeout=1) { $curlHandle = curl_init(); curl_setopt( $curlHandle , CURLOPT_URL, $url ); curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout ); $result = curl_exec( $curlHandle ); curl_close( $curlHandle ); return $result; } $hx = curl_get_contents('http://www.111cn.net/'); |
相信使用过file_get_contents函数的朋友都知道,当获取的$url访问不了时,会导致页面漫长的等待,甚至还能导致PHP进程占用CPU达100%,因此这个函数就诞生了。
通过php.ini中的default_socket_timeout设置,默认超时时间是default_socket_timeout = 60
代码如下 | 复制代码 |
max_execution_time = 30 default_socket_timeout = 60 |
假设你使用file_get_contents花费45,而max_execution_time是30,它将超时吗?
答案是NO,因为max_execution_time不影响操作系统调用或stream操作
另一点要指出的的是default_socket_timeout是在socket响应之前计算的,只要得到响应,将会一直执行下去
可以通过以下三种方式设置
代码如下 | 复制代码 |
1 直接在php.ini中修改 default_socket_timeout =120 |
curl的一些常识介绍
保留原file_get_contents函数的原因是当读取本地文件时,用原生的file_get_contents显然更合适。
另来自张宴的file_get_contnets的优化,具体可看:
首先,使用 top 命令查看 CPU 使用率较高的 php-cgi 进程。
代码如下 | 复制代码 |
top - 10:34:18 up 724 days, 21:01, 3 users, load average: 17.86, 11.16, 7.69 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 找其中一个 CPU 100% 的 php-cgi 进程的 PID,用以下命令跟踪一下: strace -p 10747 |
如果屏幕显示:
代码如下 | 复制代码 |
select(7, [6], [6], [], {15, 0}) = 1 (out [6], left {15, 0}) |
那么,就可以确定是 file_get_contents() 导致的问题了。
同样是设置超时时间来解决这个问题。如果没装curl,就必须得用这个方式了。
代码如下 | 复制代码 |
$ctx = stream_context_create(array( |
相关文章
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
- 本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
- 最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
Antd-vue Table组件添加Click事件,实现点击某行数据教程
这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17- 这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
- 这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
- 本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
- Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
- 在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
- 这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
Vue生命周期activated之返回上一页不重新请求数据操作
这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26- 下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
- 这篇文章主要介绍了解决vue watch数据的方法被调用了两次的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07